java - JUnit测试递归方法

标签 java junit

我用递归方法创建了一个类来检查两个数组是否相同,现在我想用 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);
}

最佳答案

首先:重构被测方法的方法名。

equalsHelper2() 真是一个糟糕的名字。
isSameContent() 这样的东西更好。
测试方法也是一样的:testOfTheTests()
它意味着一切:它真的是一种反模式命名。

其次:质疑自己方法的 API:输入和输出。

例如:如果一个或两个数组为空,方法应该返回什么?
你应该抛出异常吗?返回 false ?所以对于...

其他示例:为什么使用 Boolean 而不是 boolean 作为测试方法的返回类型?
null 是有效的返回值吗?如果是,为什么?如果不是,请改用 boolean

要实现它,最好的方法是继续使用 TDD:为每个用例逐步创建一个测试方法,并为每个测试方法指定一个相关的名称:isSameContent_with_empty_array(), isSameContent_with_same_content( ), isSameContent_with_distinct_content(), 等等...
通过编写第一个测试方法来实现它,明确指定方法的实际输入和预期输出,并相应地调整实现,直到测试通过。

然后,如果需要,重构实现/测试并继续下一个测试方法。

关于java - JUnit测试递归方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45753703/

相关文章:

java - 适当的方法封装用于单元测试

java - 在 JUnit 测试用例中模拟用户输入

java - 如何证明算法的正确性?

java - 如何使用java selenium中的循环从项目网格中查找相同的元素?

java apache poi 导入netbeans 6.9

java - 如果可以选择向现有系统添加单元测试或集成测试,从哪个开始更好,为什么?

java - 在 JUnit 测试中使用 JMockit 多次模拟静态方法

java - Java比较两个相同类型的对象

java - Java中的不合格名称

java - 以编程方式创建 junit 报告