首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在使用Junit Parameterized.class时测试默认用例

如何在使用Junit Parameterized.class时测试默认用例
EN

Stack Overflow用户
提问于 2015-02-20 10:02:12
回答 1查看 97关注 0票数 0

我有一个旧版本的API: Foo()。现在我将API扩展到Foo(false),Foo(true)和Foo()应该仍然可以像以前一样工作。

现在我使用Parameterized.class来做Junit,参数列表是{null,false,true}。我想把测试用例写成:

代码语言:javascript
代码运行次数:0
运行
复制
@Test 
public void fooTest() {
    Foo(parameter);
}

但是Foo(参数)不能测试Foo(),所以我不得不把测试代码写成:

代码语言:javascript
代码运行次数:0
运行
复制
@Test 
public void fooTest() {
   if (parameter == null) 
       Foo();
   else 
       Foo(parameter);
}

有没有什么简单的方法来编写测试用例,这样我就不需要检查参数是否为空了?我之所以这样问,是因为在我扩展API之前,很多地方已经有了原始的测试用例(见下文),我不想对测试代码做太多的修改。:

代码语言:javascript
代码运行次数:0
运行
复制
@Test 
public void fooTest() {
    Foo();
}
EN

回答 1

Stack Overflow用户

发布于 2015-03-10 13:06:05

一种方法是将Foo-Object (而不是构造器参数)放入参数中,即用{Foo(false), Foo(true),Foo()}代替{null, false, true}

然而,回顾一下你的例子。它可能是一个真实问题的抽象。如果不是:

缺少单元断言,这些断言应该包含在参数中(否则您会在断言phase).

  • testing中遇到if问题,使用3个简单的(非参数化的)

更容易完成3个参数值的断言测试

当然,您也可以将默认构造函数放入单独的(非参数化的)测试类中。

哪种选择是最好的,这在很大程度上取决于抽象背后的真正问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28620512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档