在Python中,我经常会看到类似这样的测试:
tests = [ (2, 4), (3, 9), (10, 100), ] for (input, expected_output) in tests: assert f(input) == expected_output
使用JUnit在Java中编写这样的测试(其中指定了一组测试用例,然后循环运行每个测试用例)的"正确"方法是什么?
谢谢!
抢先回应:我意识到我可以这样做:
assertEquals(4, f(2)) assertEquals(9, f(3)) ....
但是......我希望有更好的方法.
一样.
int[][] tests = { {2, 4}, {3, 9}, {10, 100} }; for (int[] test : tests) { assertEquals(test[1], f(test[0])); }
当然不像python那么漂亮,但很少有东西.
您可能还想研究JUnit Theories,这是未来的一项功能......
正确的方法是编写单独的断言语句,即使您不喜欢它.
它避免了不必要的复杂化,当它失败时,有时更容易看到哪个值失败(无需启动调试器).
但是,如果您自动生成测试数据,则会有不同的故事.