1 /* 2 * Copyright (c) 2017 Mockito contributors 3 * This program is made available under the terms of the MIT License. 4 */ 5 package org.mockitousage.junitrule; 6 7 import org.junit.Rule; 8 import org.junit.Test; 9 import org.mockito.Mock; 10 import org.mockito.quality.Strictness; 11 import org.mockito.internal.junit.JUnitRule; 12 import org.mockito.internal.util.SimpleMockitoLogger; 13 import org.mockitousage.IMethods; 14 import org.mockitoutil.ConcurrentTesting; 15 import org.mockitoutil.SafeJUnitRule; 16 17 import static org.junit.Assert.assertEquals; 18 import static org.junit.Assert.assertTrue; 19 import static org.mockito.Mockito.when; 20 import static org.mockitoutil.TestBase.filterLineNo; 21 22 public class StubbingWarningsMultiThreadingTest { 23 24 private SimpleMockitoLogger logger = new SimpleMockitoLogger(); 25 @Rule public SafeJUnitRule rule = new SafeJUnitRule(new JUnitRule(logger, Strictness.WARN)); 26 @Mock IMethods mock; 27 using_stubbing_from_different_thread()28 @Test public void using_stubbing_from_different_thread() throws Throwable { 29 //expect no warnings 30 rule.expectSuccess(new Runnable() { 31 public void run() { 32 assertTrue(logger.getLoggedInfo().isEmpty()); 33 } 34 }); 35 36 //when stubbing is declared 37 when(mock.simpleMethod()).thenReturn("1"); 38 //and used from a different thread 39 ConcurrentTesting.inThread(new Runnable() { 40 public void run() { 41 mock.simpleMethod(); 42 } 43 }); 44 } 45 unused_stub_from_different_thread()46 @Test public void unused_stub_from_different_thread() throws Throwable { 47 //expect warnings 48 rule.expectSuccess(new Runnable() { 49 public void run() { 50 assertEquals( 51 "[MockitoHint] StubbingWarningsMultiThreadingTest.unused_stub_from_different_thread (see javadoc for MockitoHint):\n" + 52 "[MockitoHint] 1. Unused -> at org.mockitousage.junitrule.StubbingWarningsMultiThreadingTest.unused_stub_from_different_thread(StubbingWarningsMultiThreadingTest.java:0)\n", 53 filterLineNo(logger.getLoggedInfo())); 54 } 55 }); 56 57 //when stubbings are declared 58 when(mock.simpleMethod(1)).thenReturn("1"); 59 when(mock.simpleMethod(2)).thenReturn("2"); 60 61 //and one of the stubbings is used from a different thread 62 ConcurrentTesting.inThread(new Runnable() { 63 public void run() { 64 mock.simpleMethod(1); 65 } 66 }); 67 } 68 69 } 70