【发布时间】:2019-02-11 14:50:50
【问题描述】:
我应该忽略新构造函数的单元测试吗?我应该为不同的构造函数创建一个新的测试类并复制测试吗?测试本身没有改变。如果有一种方法可以只使用不同的构造函数来运行每个测试,那就太好了。为了可视化发生了什么,我在下面添加了代码。
我有一个看起来像这样的课程:
public class Foo {
public Foo() {...}
public void doStuff(){...}
public void doThing(){...}
}
我有一个看起来像这样的测试类:
public class FooTest {
Foo foo;
@Before
public void setUp() {
foo = new Foo();
}
@Test
public void fooCanDoThing() {
foo.doThing();
assertThat(...);
}
@Test
public void fooCanDoStuff() {
foo.doStuff();
assertThat(...);
}
}
我最近有一项任务,包括向我的 foo 类添加更多构造函数
public class Foo {
...
public Foo(String bleh) {...}
public Foo(String bleh, String blah) {...}
...
}
使用多个构造函数进行测试的最佳方法是什么?
编辑:为了清理一些东西,foo 扩展了东西
public class Foo extends Thing {...}
假设 Thing 具有并处理了 getBlah 的功能,并且我已经测试了 getBlah。但是现在,我真的可以设置自己的“blah”了。
【问题讨论】:
-
您可以轻松地将它们与其他方法测试一起测试。毕竟,为了测试 Foo 类的任何方法,您首先需要运行(至少)一个构造函数。很有可能,在一个测试中你会测试第二个参数,而在另一个测试中你不会。
-
但是如果你这样写测试: foo = new Foo;我希望您理解它们不会很好地工作。
标签: java unit-testing junit