Java Junit测试运行冻结

Java Junit测试运行冻结,java,testing,junit,automation,Java,Testing,Junit,Automation,今天是我第一次接触Junit,所以我对一些返回INT的程序进行了一些练习,效果很好。然后我想尝试返回一个布尔值,当我运行测试用例时,它什么也不做,它正在运行,但该条不会变为绿色或红色 这是一节课: public class primcheck { public boolean prim(int n) { int nr=0; int i; while(nr==0) { for(i=2;i<=n/2;i++) {

今天是我第一次接触Junit,所以我对一些返回INT的程序进行了一些练习,效果很好。然后我想尝试返回一个布尔值,当我运行测试用例时,它什么也不做,它正在运行,但该条不会变为绿色或红色

这是一节课:

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无关。如果你“用手”运行它,你也会遇到同样的问题


既然你提到了一个变绿或变红的条,你能解释一下你在什么环境下运行吗?最新版本的eclipse,条在左上角,你确定你的循环会退出吗?@AnghelAlexandru那么你的测试设置有问题,因为。但我不明白,我已经尝试过其他测试用例,它返回了一个int,并且成功了…它是strange@AnghelAlexandru由于
while(nr==0)
如果for循环
nr
的内部
没有增加,则您的方法可能进入无限循环。这就是你测试中发生的事情。基本上,您的测试做得很好:它在代码中发现了一个问题
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);
    }

}
    int nr=0;
    int i;
    while(nr==0) {
        for(i=2;i<=n/2;i++) {
            if(n%i==0) nr++;
        }

    }
        for(i=2;i<=n/2 && nr==0;i++) {