gpt4 book ai didi

java - 在本地抑制不必要的 stub 异常

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:49:03 24 4
gpt4 key购买 nike

Mockito(自版本 2 起)检测未使用的 stub ,这通常是一件非常好的事情。

现在考虑以下代码:

result = foo(1) || foo(2); // generally: true if any input is true

和 stub :

when(foo(1)).return(true);
when(foo(2)).return(false);

现在 foo(2) 被不必要地 stub 了。但是,对原始代码进行最轻微的重构可能会改变这一点(将表达式更改为 foo(2) || foo(1))。在这种情况下,如果任何输入为 true,我想保留 stub 以检查结果是否为 true。 (假设捷径不是必需的,但是可能的,当然真正的代码要复杂得多)。

现在我的问题是:这样做的优雅方式是什么?更适合单个 stub ?使用 MockitoJUnitRunner.Silent 作为运行器会抑制整个测试类的警告。

最佳答案

What’s the elegant way to do that? Preferable for a single stubbing?

我认为在您希望调用其中一个调用时对两个不同的调用进行 stub 并不能提供有意义的单元测试。

当我读到的时候:

when(foo(1)).return(true);
when(foo(2)).return(true);

我希望在代码中看到类似的东西:

result = foo(1) && foo(2);

不是:result = foo(1) || foo(2);

在你的情况下,我会对被测试的方法有两个不同的调用(根据它的可读性在一两个测试中)并且对于每一个,我只会模拟预期的 foo() 调用,而不是两者。

Using MockitoJUnitRunner.Silent as the runner suppresses the warning for the whole test class.

就我个人而言,我不喜欢隐藏警告而您可以提高测试代码质量的想法。

关于MockitoJUnitRunner.Silent ,你可以读到(重点是我的):

Using this implementation of the runner is not recommended. Engineers should care for removing unused stubbings because they are dead code, they add unnecessary details, potentially making the test code harder to comprehend. If you have good reasons to use the silent runner, let us know at the mailing list or raise an issue in our issue tracker. See also UnnecessaryStubbingException

关于java - 在本地抑制不必要的 stub 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46969387/

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