在我的单元测试之一中,我试图验证是否从未调用过我的模拟方法之一。问题在于,该模拟是许多其他测试中通用的全局@beforeClass
模拟。
因此,当我尝试验证是否从未调用过该模拟程序时,它总是会失败,因为其他测试正在调用该模拟程序。有没有一种方法可以使用Mockito来验证仅针对该测试的模拟调用?
我能想到的一种解决方案是将我的普通模拟从@BeforeClass
转换为@Before
(这样,在每次测试之前,都会重新创建模拟)。但是想检查是否还有其他解决方案,而无需触及常见的BeforeClass
模拟。
@BeforeClass
public void before() {
someClassMock = mock(someClass.class);
when(someClassMock.aMethodCall(any()).thenReturn(true);
}
// Bunch of tests
@Test
public void oneOfTheManytest(){
//some code where someClassMock.aMethodCall is NOT called
verify(someClassMock, never()).aMethodCall(any());
// ^^ This always fails, even when I am sure this mock
// is not called for this test.
// I think this looks if this mock is called or not overall for this test file.
}
有人可以提供一种解决方案,帮助我验证特定测试的模拟方法调用吗?
答案 0 :(得分:0)
我可以在这里推断您的测试未遵循AAA。每个测试都应该可以单独运行,并且它的成功不应该取决于其他测试的执行。
最好的选择是将您需要重复的模拟设置提取到一个辅助方法中,并在测试的“安排”部分中调用它。