我需要在一个方法中实现Division by Zero操作 (1)每个达到100%路径覆盖率的测试套件都会显示故障;(2)可以创建一个测试套件,实现100%的分支覆盖并且不会显示故障。
由于除零是非常简单的操作,我想知道这种方法的实现,这样可以满足这两个要求。目前,我无法做到这一点,因为我的分支和路径覆盖测试用例都揭示了一个错误(ArithmeticException)并且是相同的。
这是我目前的代码,但这是错误的。
0x204d63
由于
答案 0 :(得分:0)
首先检查除数是否等于0并返回或抛出异常。当你知道这是一个真正的可能性时,等待得到0除以,这不是一个好习惯。
答案 1 :(得分: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 = 1
和n = -1
测试用例即可达到完整的分支覆盖范围(公认的是哑测试套件),但是您完全错过了零除法部分。但是,我没有对此进行测试。