我需要以这样一种方法实现除以零操作:(1)不显示每个路径覆盖率达到100%的测试套件,以及(2)创建一个分支覆盖率达到100%并且不显示故障的测试套件是可能的。
由于除以零是非常简单的操作,我想知道这个方法的实现,以便这两个需求可以是错误的( met.Currently ),我不能这样做,因为我的分支和路径覆盖测试用例都揭示了一个错误(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;谢谢
发布于 2019-06-23 16:36:35
好吧,我想这只是一个练习,所以人们可以做一些非常愚蠢的事情,就像这样:
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 = 1和n = -1测试用例来实现完整的分支覆盖(诚然,这是愚蠢的测试套件),但是您完全忽略了零除部分。然而,我并没有对此进行测试。
发布于 2018-03-30 03:00:05
首先检查除数是否等于0,然后返回或抛出异常。等着被0除以,而你知道这是一种真正的可能性,这不是一个好的做法。
https://stackoverflow.com/questions/49563130
复制相似问题