有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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);
}

共 (2) 个答案

  1. # 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. # 2 楼答案

    你读到的关于“无值、负值和有限值”的内容意味着,测试数组可以采用的所有不同形式,无值或负值不适用于你的情况,所以你需要考虑适用于你的方法的测试案例

    下面是一些您可能想要添加的测试用例:

    • 一个数组为空
    • 两个数组都为空
    • 数组的长度不同
    • 这两个元素的顺序相同
    • 这些数组具有相同的元素,但顺序不同
    • 如果传递给方法的数组索引无效

    以下是两个例子:

    @Test
     public void testEqual(){
         int[]a={1,2,3,4,5,6,7};
         int[]b={7,6,5,4,3,2,1};
         Assert.assertEquals(a,b);
         Assert.assertTrue(Main.equalsHelper2(a,b,0,6));
    }
    
    
    @Test
     public void testDifferent(){
         int[]a={1,1,1,1,1,1,1};
         int[]b={7,6,5,4,3,2,1};
         Assert.assertNotEquals(a,b);
         Assert.assertFalse(Main.equalsHelper2(a,b,0,6));
    }