我目前正在学习Java中的代码覆盖测试,特别是循环覆盖。从context开始,循环覆盖包括运行循环0,1和>1次。然而,我遇到了一个我试图测试的特定函数结构的问题。
结构如下:
function() {
if(A){
//do something here as well
while(A){
//do something
}
}
}
字符串
while循环嵌套在一个if语句中,这两个语句都有完全相同的条件A。这个结构似乎阻止我创建一个while循环执行零次的测试用例,因为如果A为假,封闭的if语句将阻止进入循环。
给定这个结构,我如何构造测试用例来为while循环提供循环覆盖(0,1,>1次迭代)?
编辑:如果这个问题不合适或者太愚蠢而无法回答,我很抱歉,请告诉我这个问题有什么问题,我下次不会再问类似的问题。
2条答案
按热度按时间ttcibm8c1#
让我们假设你有一个语句(或几个语句)在循环中改变
A
的值,否则,一旦进入,它将是一个无限循环。其中两种情况很简单:
对于
1
,您需要一个A
的值,即true
,以及一些使A
在第一次迭代中变为false
的附加条件。对于
>1
,需要一个A
的值,即true
,以及一些附加条件,以确保A
在循环的第一次迭代中仍然是true
,但可能在一段时间后变为false
。对于
0
的覆盖,从循环条件被求值但从未输入的意义上说,你有一个问题。假设if
下的“这里也做点什么”没有改变A
的值,那么根本没有办法求值循环条件但不输入它。这种情况将要求A
为false
,但如果是的话,循环根本就不会到达klh5stk12#
使用面向对象的设计(Object Oriented Design)。
字符串