我需要为我的应用程序创建一些单元测试,但我不确定如何继续,我无法在线找到任何帮助。我想知道的是如何测试一个应用程序,其中有许多方法依赖于其他几个方法。
e.g。
public class foo(){
public void doIt() {
boz();
bar();
biz.baz(); //from another class
}
public void bar(){
...
}
public int boz(){
...
}
}
所以在上面提到的场景中,人们会认为测试doIt
方法的单元就足够了,因为如果内部调用的方法有问题,它将会失败。
虽然,我不确定我们是否可以认为这是单元测试,因为它测试的功能不仅仅是一个实体。另外,如果对doIt
方法的测试失败,那么很难确定错误发生在哪里,特别是在有很多依赖关系的情况下 - 不能否定单元测试的含义?< / p>
到目前为止,我所考虑的唯一方法是首先测试依赖关系(即bar
boz
baz
),然后是doIt
方法。这样,如果测试套件没有错误地到达doIt
并且失败意味着在该方法内部实现的代码存在问题,而不是在其依赖项内部。
但这是正确的做法吗?
答案 0 :(得分:0)
要测试doIt()方法而不必调用bar()和baz()的实际实现,请在Mockito中使用Spy:
如果bar()真的无效,你可以这样做:
foo f = spy(new foo());
doNothing().when(foo).bar();
更好的是,如果你可以将你的依赖项(例如:biz)作为模拟对象注入并直接测试你的foo类。