gpt4 book ai didi

Java单元测试: Test from public method or package private method

转载 作者:行者123 更新时间:2023-12-02 09:22:54 24 4
gpt4 key购买 nike

我有一个带有公共(public)方法 calculate() 的类 Price,它调用另一个私有(private)方法 calculateByA()

public class Price {
public SomeObject calculate() {
if(someCondition) {
calculateByA()
// ....
} else {
//Calculate something else
}
}

private int calculateByA() {
//calculation logic
}
}

我想做一个单元测试来测试calculationByA()的逻辑。

我想到了:

  1. 通过调用公共(public)方法 calculate() 并将 someCondition 设置为 true 进行测试。
  2. calculateByA() 更改为包私有(private)并直接在测试中调用它。

但是,我不确定哪种方法更好。

最佳答案

我非常不喜欢使用 powermock 等。问题不在于它们让你绕过可见性系统(其他语言根本懒得拥有,例如参见 python),而是你尝试测试实现细节。

为可见方法编写测试并观察其私有(private)方法的副作用。在你的例子中,例如测试在某些条件下,您的结果是否符合该情况下的预期。如果您因为有很多私有(private)方法而遇到问题,请考虑使用包并将代码分开 - 无论如何它可能太大了。还可以使用 DI 卢克!

关于Java单元测试: Test from public method or package private method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58554409/

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