【发布时间】:2013-12-03 21:42:36
【问题描述】:
我可能会问一些非常明显的问题。我在编写单元测试方面没有太多经验,因此出现了以下问题,让我开始思考。
说,你有一个类,这个类有你想测试的方法。但是你能一次测试一个方法吗?我想不是。为了测试该方法,您需要调用一个或多个其他方法。例如:
class MyClass {
int x;
void foo() { x = 4; }
boolean bar() { x = 3; }
boolean check() { return x == 4; }
}
为了测试 foo 和 bar,我需要使用 check(),另一方面,为了测试 check,我需要使用 foo() 或 bar()。
说,我必须遵循测试用例:
class MyClassTest {
@Test
void testFoo() {
MyClass obj = new MyClass();
obj.foo();
assert obj.check();
}
}
现在假设,我的同事更改了 check() 方法:
boolean check() { return x == 5; }
当然,testFoo() 会失败,可能有人会认为 foo 方法有问题。
所以这看起来像鸡蛋一样的情况。人们通常如何解决这个问题?
【问题讨论】:
-
工作单位是什么?这通常是它适用于测试的范围......有时它就像单一方法一样简洁,但通常您需要创建一个“夹具”或“套件”来定义您的“工作单元”。
标签: java unit-testing testing