javajunit测试递归方法
我用递归方法创建了一个类来检查两个数组是否相同,现在我想用JUnit来测试它。 所以我的问题是:
我应该使用什么方法来测试无值、负值和限制值强>
提前谢谢。 致意
ps:这是我到目前为止所做的:
@Test
public void testOfTheTests(){
System.out.println("Test");
int[]a={1,2,3,4,5,6,7};
int[]b={7,6,5,4,3,2,1};
Boolean result = Main.equalsHelper2(a,b,0,6);
Boolean expResult=true;
// assertEquals(expResult,result);
Assert.assertNotNull(result);
}
# 1 楼答案
首先:重构被测试方法的方法名
equalsHelper2()
真是个糟糕的名字像
isSameContent()
这样的东西更好测试方法也是一样:
testOfTheTests()
它意味着一切:它实际上是一种反模式命名。
第二:询问自己方法的API:输入和输出
例如:如果一个或两个数组都为null,该方法应该返回什么
你应该抛出一个异常吗?返回
false
?所以对于其他示例:为什么使用
Boolean
而不是boolean
作为测试方法的返回类型null
是有效的返回值吗?如果是,为什么?如果不是,则使用boolean
为了实现它,最好的方法是继续TDD:为每个用例增量创建一个测试方法,并给每个测试方法一个相关的名称:
isSameContent_with_empty_array()
、isSameContent_with_same_content()
、isSameContent_with_distinct_content()
,等等首先编写第一个测试方法,明确指定方法的实际输入和预期输出,然后调整实现,直到测试通过
然后,如果需要,重构实现/测试,并继续下一个测试方法
# 2 楼答案
你读到的关于“无值、负值和有限值”的内容意味着,测试数组可以采用的所有不同形式,无值或负值不适用于你的情况,所以你需要考虑适用于你的方法的测试案例
下面是一些您可能想要添加的测试用例:
以下是两个例子: