gpt4 book ai didi

java - 为 if else block 编写 jUnit 测试用例

转载 作者:行者123 更新时间:2023-12-01 09:35:50 27 4
gpt4 key购买 nike

我有一个带有简单 if/else block 的方法。在 if 和 else block 中都会调用私有(private)方法。

下面是我要为其编写单元测试用例的方法。

public void enableBLEScan() {
if (<some boolean expression which can be mocked>) {
initializeScan();
} else {
stopScan();
}
}

我可以轻松地 stub boolean 表达式的行为。

但我想检查 if else block 内的方法调用是否正确发生。我怎样才能做到这一点?

最佳答案

要点是:测试是否调用内部私有(private)方法...是编写单元测试时的反模式!

测试内部实现细节。对于您的测试来说,某些“面向外部”的方法如何执行其操作并不重要。换句话说,您有以下选择:

  1. 如果您正在测试的类的“字段”上调用方法,请使用依赖项注入(inject)插入相应对象的模拟版本。然后您可以验证是否调用了预期的方法。
  2. 检查可观察行为。含义:调用您的“被测方法”;并检查此类方法返回的值;或者在调用后使用其他 getter 来检查类的内部状态。

换句话说:每个“公共(public)”方法都应该有一个明确的、定义的含义。所以,如果你调用它们,它们就会产生明确的效果;应该观察/断言这种效果。

很可能您当前的设计确实支持这些想法。然后,认真地:考虑退一步并改变你的设计。因为:你创建了一些无法合理测试的东西。那么很可能……您的设计还存在其他问题。

关于java - 为 if else block 编写 jUnit 测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38942288/

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