0

我需要以一种方法实现除零操作,以便(1)实现 100% 路径覆盖率的每个测试套件都显示故障,并且(2)可以创建一个实现 100% 分支的测试套件覆盖范围并且不显示故障。

由于除以零是非常简单的操作,我想知道这种方法的实现,以便可以满足这两个要求。目前,我无法做到,因为我的分支和路径覆盖测试用例都显示了错误( ArithmeticException) 并且是相同的。

这是我当前的代码,但它是错误的。

void method1(int m, int n)
         int p = m / n;
         if (n != 0) {
         System.out.println("Print some value");
         }
         if (n == 0) {
         System.out.println("Infinity");
         }
         return p;

谢谢

4

2 回答 2

0

好吧,我猜这只是一个练习,所以人们可以做一些非常愚蠢的事情,就像这样:

double method1(int m, int n) {
     double p;
     if (n >= 0) {
         p = m / n;
     } else {
         p = m / n;
     }

     if (n > 0) {
         p = m / n;
     } else {
         p = m / n;
     }

     return p;
}

这样,如果你有完整的路径覆盖,那么你一定已经覆盖了n >= 0在第一个条件下进入n <= 0分支和在第二个条件下进入分支的路径。因此,每个 100% 的路径覆盖套件都必须n = 0在某些测试用例中使用,并且会像在您的代码中那样抛出 ArithmeticException,因此揭示了该方法的错误。

另一方面,您只需要测试用例即可实现完整的分支覆盖(当然是愚蠢n = 1n = -1测试套件),但您完全错过了零除法部分。但是,我没有对此进行测试。

于 2019-06-23T08:36:34.993 回答
-1

首先检查除数是否等于 0,然后返回或抛出异常。当您知道这是一个真正的可能性时,等待除以 0 并不是一个好习惯。

于 2018-03-29T19:00:04.597 回答