在Python中,我经常会有如下所示的测试:
tests = [
(2, 4),
(3, 9),
(10, 100),
]
for (input, expected_output) in tests:
assert f(input) == expected_output用JUnit编写像这样的测试(其中指定了一组测试用例,然后每个测试用例运行一个循环)的“正确”方法是什么?
谢谢!
抢占式反应:我意识到我可以做这样的事情:
assertEquals(4, f(2))
assertEquals(9, f(3))
....但是..。我希望有更好的方法。
发布于 2009-03-19 16:53:08
同样的事情。
int[][] tests = {
{2, 4},
{3, 9},
{10, 100}
};
for (int[] test : tests) {
assertEquals(test[1], f(test[0]));
}当然不像python那么漂亮,但是很少有东西是这样的。
您可能还想看看JUnit理论,一个未来的特性..。
发布于 2009-03-19 17:06:03
正确的方法是编写单独的断言语句,即使您不喜欢它。
它避免了不必要的麻烦,当它失败时,有时更容易看到哪个值失败(不需要启动调试器)。
但是,如果您自动生成测试数据,则情况就不同了。
发布于 2009-03-19 17:06:39
查看Junit中的参数化测试运行程序。
http://junit.org/apidocs/org/junit/runners/Parameterized.html
看起来它会做你想要做的事情。
https://stackoverflow.com/questions/663005
复制相似问题