Евг*_*цов 0 java tdd junit unit-testing
我有一个简单的类,其中包含一个列表:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
关键是 - 我希望该列表仅从DB加载一次.我想对这个功能进行单元测试.我是TDD中的noob,我能做的就是 - 为someList编写一个公共getter和setter,并在单元测试中使用它们.但它在概念上是错误的 - 我不希望类的客户端使用此成员变量directlty.
在这种情况下如何正确测试方法?
您的单元测试错误.
单元测试是关于测试类的行为 ; 没有实施细节.
您不测试私有字段是否具有此内容或该内容.您测试的唯一方法是方法执行它们应该执行的操作.
这当然意味着您的班级必须有方法插入"特殊列表"进行测试.
简而言之:您想退后一步,并在接下来的2,3个小时内学习如何编写"易于测试代码"; 例如,在CleanCode上观看Google Tech的精彩视频.
| 归档时间: |
|
| 查看次数: |
3331 次 |
| 最近记录: |