JUnit4的@Test 和 System.in 有冲突吗

JUnit4的@Test 和 System.in 有冲突吗

背景

我在写快速幂的时候,用@Test运行代码

//快速幂代码
    public static int q_power(long a,long b,int mod){
        long res=1;
        while (b!=0){
            if(b%2==1)res=res*a%mod;
            b>>=1;
            a=a*a%mod;
        }

        return (int)res;
    }

情况1

如果是在@Test上运行

// 测试代码
    @Test
    public void q_powerTest(){
        Scanner in=new Scanner(System.in);
        int a=in.nextInt();
        int b=1000;
        int m=20;
        System.out.println(q_power(a,b,m));
    }

img

运行时候,左边一直在转的情况,而且控制台无法输入

情况2

但是如果我把a直接在代码赋值(例如)int a=2;

    @Test
    public void q_powerTest(){
        Scanner in=new Scanner(System.in);
        int a=2;
        int b=1000;
        int m=20;
        System.out.println(q_power(a,b,m));
    }

那么程序运行正常,直接出结果

img

情况3

直接在main测试

  public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int a=in.nextInt();
        int b=1000;
        int m=20;
        System.out.println(q_power(a,b,m));
    }

img

就一切正常

问题

我这样测试下来,感觉就是@Test 和 System.in 有冲突。
想问,有人知道具体原因吗?
还是,你们用我的代码会不会情况不一样,我用的idea,jdk 1.8

关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:JUnit4使用Assert类进行测试判断以及@Test注解属性

解决了
具体看这个博客
https://blog.csdn.net/qq_41160301/article/details/123029332