gpt4 book ai didi

java - 在特定测试中验证模拟调用

转载 作者:行者123 更新时间:2023-12-02 05:03:03 25 4
gpt4 key购买 nike

在我的一个单元测试中,我试图验证我的模拟方法之一是否从未被调用过。问题是这个模拟是许多其他测试常见的全局 @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.

}

有人可以帮助我找到一个可以验证特定测试的模拟方法调用的解决方案吗?

最佳答案

我可以在这里推断您的测试不遵循 AAA。每个测试都应该可以单独运行,并且其成功不应该依赖于其他测试的执行。

最好的选择是将需要重复的模拟设置提取到辅助方法中,并在测试的排列部分中调用它。

关于java - 在特定测试中验证模拟调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56374590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com