今天是我第一次接触Junit,所以我对一些返回it的程序进行了一点练习,它工作得很好。然后我想尝试返回一个布尔值,当我运行测试用例时,它什么也不做,它正在运行,但是条形图没有变成绿色或红色。
这是一个类:
public class primcheck {
public boolean prim(int n) {
int nr=0;
int i;
while(nr==0) {
for(i=2;i<=n/2;i++) {
if(n%i==0) nr++;
}
}
if(nr==0) return true;
return false;
}
}
和Junit测试用例
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
class primeTest {
@Test
void test() {
primcheck pc = new primcheck();
boolean output = pc.prim(5);
assertEquals(false,output);
}
}
你能给我解释一下我做错了什么吗?提前谢谢你!
发布于 2018-06-08 03:52:36
这个问题与JUnit无关。如果你“手动”运行它,你也会遇到同样的问题。
int nr=0;
int i;
while(nr==0) {
for(i=2;i<=n/2;i++) {
if(n%i==0) nr++;
}
}
如果您找不到最里面的因子,您将继续无限循环,因为没有任何东西会使nr==0
为假:在执行一次for
循环之后,您只需继续运行while循环,而不执行if
循环体。
删除while
循环,并将条件添加到for循环保护中(或者完全省略它):
for(i=2;i<=n/2 && nr==0;i++) {
https://stackoverflow.com/questions/50749180
复制相似问题