首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试Java方法输出的“正确”方法是什么?

测试Java方法输出的“正确”方法是什么?
EN

Stack Overflow用户
提问于 2009-03-19 16:45:19
回答 7查看 689关注 0票数 5

在Python中,我经常会有如下所示的测试:

代码语言:javascript
复制
tests = [
    (2, 4),
    (3, 9),
    (10, 100),
]
for (input, expected_output) in tests:
    assert f(input) == expected_output

用JUnit编写像这样的测试(其中指定了一组测试用例,然后每个测试用例运行一个循环)的“正确”方法是什么?

谢谢!

抢占式反应:我意识到我可以做这样的事情:

代码语言:javascript
复制
assertEquals(4, f(2))
assertEquals(9, f(3))
....

但是..。我希望有更好的方法。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-03-19 16:53:08

同样的事情。

代码语言:javascript
复制
    int[][] tests = {
            {2, 4},
            {3, 9},
            {10, 100}
    };
    for (int[] test : tests) {
        assertEquals(test[1], f(test[0]));
    }

当然不像python那么漂亮,但是很少有东西是这样的。

您可能还想看看JUnit理论,一个未来的特性..。

票数 11
EN

Stack Overflow用户

发布于 2009-03-19 17:06:03

正确的方法是编写单独的断言语句,即使您不喜欢它。

它避免了不必要的麻烦,当它失败时,有时更容易看到哪个值失败(不需要启动调试器)。

但是,如果您自动生成测试数据,则情况就不同了。

票数 5
EN

Stack Overflow用户

发布于 2009-03-19 17:06:39

查看Junit中的参数化测试运行程序。

http://junit.org/apidocs/org/junit/runners/Parameterized.html

看起来它会做你想要做的事情。

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

https://stackoverflow.com/questions/663005

复制
相关文章

相似问题

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