我需要为我的应用程序创建一些单元测试,但我不知道如何继续,也找不到任何在线帮助。我想知道的是如何测试应用程序,其中有许多方法依赖于其他几个方法。如何使用依赖关系对单元测试方法进行单元测试
例如
public class foo(){
public void doIt() {
boz();
bar();
biz.baz(); //from another class
}
public void bar(){
...
}
public int boz(){
...
}
}
所以像上面一个给出的一个场景会认为既然是要反正失败,如果事情是错叫里面的方法是单元测试doIt
方法就足够了。
虽然,我不确定我们是否可以认为这是单元测试,因为它测试的不仅仅是一个实体的功能。另外,如果方法doIt
上的测试失败,那么将很难确定发生错误的位置,特别是在存在多个依赖关系的情况下 - 这是否违背了单元测试的含义?
到目前为止,我已经想到的唯一方法是,首先测试的依赖关系(即bar
boz
baz
),然后doIt
方法来启动。这样,如果测试套件没有错误并且失败意味着在该方法中实现的代码出现问题,而不是在其依赖关系内,则测试套件获得doIt
。
但是,这是正确的做法吗?
'bar'和'boz'不是依赖项,因为它们是您正在测试的类的一部分。事实上,'biz'就是依赖。为了单元测试'foo',你需要使'biz'成为一个接口而不是具体的实现。这样你可以在单元测试中提供一个虚拟版本的'biz'。 –
@KaseySpeakman提到'bar'和'boz'不是依赖关系,他们应该面对你的测试。为什么不使用已知的框架如JUnit? –
@KaseySpeakman是不是有点太多?改变整个实现和创建接口我不需要为了单元测试而另外使用它。其他方法怎么样?我是否也单独测试它们?即'boz'和'bar' – Rakim