blob: 502e205f8191de05b8769a637421967d279e481f [file] [log] [blame]
/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.concurrentmockito;
import org.junit.Test;
import org.mockitousage.IMethods;
import org.mockitoutil.TestBase;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
//this test always passes but please keep looking sys err
//this test should be run 10 times, manually
public class ThreadsShareGenerouslyStubbedMockTest extends TestBase {
private IMethods mock;
@Test
public void shouldAllowVerifyingInThreads() throws Exception {
for(int i = 0; i < 50; i++) {
performTest();
}
}
private void performTest() throws InterruptedException {
mock = mock(IMethods.class);
when(mock.simpleMethod("foo"))
.thenReturn("foo")
.thenReturn("bar")
.thenReturn("baz")
.thenReturn("foo")
.thenReturn("bar")
.thenReturn("baz");
final Thread[] listeners = new Thread[100];
for (int i = 0; i < listeners.length; i++) {
listeners[i] = new Thread() {
@Override
public void run() {
try {
mock.simpleMethod("foo");
mock.simpleMethod("foo");
mock.simpleMethod("foo");
mock.simpleMethod("foo");
mock.simpleMethod("foo");
mock.simpleMethod("foo");
} catch (Exception e) {
throw new RuntimeException(e);
}
}
};
listeners[i].start();
}
for (Thread listener : listeners) {
listener.join();
}
}
}