| /* |
| * 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(); |
| } |
| } |
| } |