Mockito 测试隔离
根据 JUnit 单测隔离 ,当 Mockito 和 JUnit 配合使用时,也会将非static变量或者非单例隔离开。
比如使用 @Mock 修饰的 mock 对象在不同的单测中会被隔离开。
示例:
import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import static org.mockito.Mockito.*; @RunWith(MockitoJUnitRunner.class) public class MockitoDemo { static class ExampleService { public int add(int a, int b) { return a+b; } } @Mock private ExampleService exampleService; @Test public void test01() { System.out.println("---call test01---"); System.out.println("打桩前: " + exampleService.add(1, 2)); when(exampleService.add(1, 2)).thenReturn(100); System.out.println("打桩后: " + exampleService.add(1, 2)); } @Test public void test02() { System.out.println("---call test02---"); System.out.println("打桩前: " + exampleService.add(1, 2)); when(exampleService.add(1, 2)).thenReturn(100); System.out.println("打桩后: " + exampleService.add(1, 2)); } }
将两个单测一起运行,运行结果是:
---call test01--- 打桩前: 0 打桩后: 100 ---call test02--- 打桩前: 0 打桩后: 100
test01 先被执行,打桩前调用add(1, 2)
的结果是0,打桩后是 100。
然后 test02 被执行,打桩前调用add(1, 2)
的结果是0,而非 100,这证明了我们上面的说法。
转载:https://www.letianbiji.com/java-mockito/mockito-test-isolate.html