• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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