循环JUnit测试的最佳实践

循环JUnit测试的最佳实践

本文介绍了循环JUnit测试的最佳实践的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在学校作业中,我应该为一个方法编写blackbox测试,该方法返回 true 参数< 80和 false 否则。目前我的方法是

In a school assignment, I should write blackbox test for a method that returns true for a parameter < 80 and false otherwise. Currently my approach would be

for (int i = 0; i < 80; i++) {
    assertTrue(someMethod(i));
}
for (int i = 80; i <= 100; i++) {
    assertFalse(someMethod(i));
}

但是,这需要100个单独的断言。有最佳/更好的练习方法吗?如果相关,我正在使用JUnit 5,但如果需要可以切换到JUnit 4(毕竟它只是一个学校作业)。问候。

However, this would require 100 seperate assertions. Is there a best/better practice method? If relevant, I'm using JUnit 5 but could switch to JUnit 4 if required (it's just a school assignment after all). Regards.

推荐答案

对于JUnit 5,请考虑重复测试功能:

For JUnit 5 consider the repeated test feature:

对于你的情况你可以重复100次:

For your case you could repeat 100 times:

@ParameterizedTest
@MethodSource("args")
public void so(int argument)
{
   assertTrue((argument < 80) == someMethod(argument));
}

private static IntStream args()
{
   return IntStream.range(0, 100);
}

我同意检查1 - 100不是完全必要的,只需检查80左右(79,80,81)。 可能值得的唯一另一种情况是检查负数但在这种情况下甚至看起来有点过分。

I would agree checking 1 - 100 is not totally necessary, just check around 80 (79, 80, 81). The only other case that might be worthwhile is checking a negative number but even that seems overkill in this case.

如果你决定只是检查79,80,81然后 ValueSource 注释更清晰:

If you do decide to just check 79,80,81 then the ValueSource annotation is cleaner:

@ParameterizedTest
@ValueSource(ints = { 79, 80, 81 })
public void so(int argument)
{
   assertTrue((argument < 80) == someMethod(argument));
}

这篇关于循环JUnit测试的最佳实践的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-28 18:35