我有一个叫做a的类,它模仿一个b类。
类b具有通过调用数据访问对象(DAO)c来创建对象的方法。也就是说,a.method1 -> b.method2
在内部调用c.getdata()
。
当我尝试创建一个单元测试时,我得到的对象c是空的。我该如何解决这个问题?
class Alpha {
String abc;
Beta beta = new Beta();
List<String> seriesOfStgs = new ArrayList<>();
public void alphaMethod() {
seriesOfStgs.addAll(beta.getStrings());
}
}
class Beta {
StringDao stringDao = new StringDao();
public List<String> getStrings() {
return stringDao.getListOfStrings();
}
}
如果你看到上面的内容,我有两个独立的类Alpha
和Beta
。我正在为Alpha
编写测试。我可以在我的JUnit测试TestAlpha.java
中模拟Beta
。当我试图获取字符串时,我得到了一个空指针异常,因为stringDao
是空的。
如何在TestAlpha
中示例化stringDao
,或者如何传递对StringDao
的引用?
2条答案
按热度按时间zyfwsgd61#
您需要找到一种方法,将您的
Beta
模拟注入到您正在测试的Alpha
对象中。一种方法是在
Alpha
类中包含一个setBeta
方法,然后可以在测试中调用它。另一种方法是重构您的
Alpha
类,以便它从一个工厂获取它的Beta
对象,然后在构造Alpha
对象时注入工厂。toiithl62#
Beta
也可以是模拟对象。例如,