如何使用依赖项单元测试方法

时间:2015-11-10 20:47:13

标签: java unit-testing dependencies

我需要为我的应用程序创建一些单元测试,但我不确定如何继续,我无法在线找到任何帮助。我想知道的是如何测试一个应用程序,其中有许多方法依赖于其他几个方法。

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并且失败意味着在该方法内部实现的代码存在问题,而不是在其依赖项内部。

但这是正确的做法吗?

1 个答案:

答案 0 :(得分:0)

要测试doIt()方法而不必调用bar()和baz()的实际实现,请在Mockito中使用Spy:

Mockito spy documentation

如果bar()真的无效,你可以这样做:

foo f = spy(new foo());
doNothing().when(foo).bar();

更好的是,如果你可以将你的依赖项(例如:biz)作为模拟对象注入并直接测试你的foo类。