我有一个旧版API:Foo()。现在我将API扩展到Foo(false),Foo(true)和Foo()应该像以前一样工作。
现在我使用Parameterized.class来执行Junit,参数列表是{null,false,true}。我想把测试用例写成:
@Test
public void fooTest() {
Foo(parameter);
}
但是Foo(参数)无法测试Foo(),所以我必须将测试代码编写为:
@Test
public void fooTest() {
if (parameter == null)
Foo();
else
Foo(parameter);
}
有没有简单的方法来编写测试用例,这样我就不需要检查参数是否为null?我问这个是因为在扩展API之前的原始测试用例已经存在很多地方(见下文)并且我不想太多地更改测试代码。 :
@Test
public void fooTest() {
Foo();
}
答案 0 :(得分:0)
一种方法是将Foo-Object(而不是构造函数参数)放入参数中,即{Foo(false), Foo(true),Foo()}
而不是{null, false, true}
然而,请查看您的示例。可能它是一个真实问题的抽象。如果不是:
当然,您可以将默认构造函数放入单独的(非参数化)测试类中。
哪种替代方案最好取决于抽象背后的实际问题。