我正在一个大型系统中执行单元测试,该系统由数百个不同的.java文件组成,这些文件都构成了后端。
在我的单元测试中,我应该从其他方法传递变量(在我的测试方法中调用方法),还是使用在测试方法中创建/声明的值进行测试?
我认为我应该专门为测试方法提出值,因为这些是单元测试,我试图单独测试每个方法,但我不确定这一点。我是否需要将获取所述数据的函数完全复制到单元测试中?
答案 0 :(得分:5)
一般来说,您应该在测试中创建值,从而更好地隔离被测系统。还有其他类型的测试,如@James所提到的,您可以使用junit进行集成测试以及单元测试。但是,junit测试的核心是单元测试,适当的单元测试可以隔离被测系统。
根据您的评论进行更新:
例如,如果您有A类和B类:
public class A {
private B b = new B();
public void callB() {
b.process(17);
b.process(22);
}
}
public class B {
public void process(int n) {
// do stuff with n
}
}
你的B测试类可以简单地实例化它自己的B并调用b.process(17)
和b.process(22)
而不需要引用A,也不需要子类A.为了测试A而不是B,你会需要某种模拟机制,用模拟代替B.这样的测试只会使用模拟验证b.process
已被17和22调用,而不用担心这些调用后发生了什么。
答案 1 :(得分:2)
答案是,这取决于它。 :)
这取决于您要测试的内容。如果您正在尝试对可能从其他函数或外部输入返回参数的函数进行单元测试,那么在我看来,您应该在测试中制作测试参数,以便可以测试各种场景和极端情况。
如果您正在尝试测试函数与其他函数或输入之间的INTEGRATION,那么您就是在进行集成测试。然后,您必须将不同的功能连接在一起,并使用上游输入执行测试用例。