gpt4 book ai didi

java - 单元测试私有(private)字段

转载 作者:行者123 更新时间:2023-12-01 07:50:52 29 4
gpt4 key购买 nike

我有一个简单的类,其中包含一个列表:

public class SomeClass {

private AppDataSource appDataSource; // it's interface
private List<Object> someList;

////

public List<Obejct> loadSomeList() {
if (someList == null) {
return appDataSource.getListFromDatabase();
}
retrunf someList;
}
}

重点是 - 我希望该列表仅从数据库加载一次。我想对这个功能进行单元测试。我是 TDD 方面的菜鸟,我所能做的就是为 someList 编写一个公共(public) getter 和 setter,并在单元测试中使用它们。但这在概念上是错误的 - 我不希望类的客户端直接使用这个成员变量。

在这种情况下如何正确测试方法?

最佳答案

您的单元测试错误。

单元测试是关于测试类的行为;不是实现细节。

您不测试私有(private)字段是否确实有这个或那个内容。您测试的唯一一件事是方法执行它们应该执行的操作。

这当然意味着您的类必须有方法插入“特殊列表”以进行测试。

长话短说:你想退后一步,花了接下来的两三个小时学习如何编写“易于测试的代码”;例如,观看 Google Tech on CleanCode 中的精彩视频。

关于java - 单元测试私有(private)字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37985985/

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