煜兮 2022-08-07 23:36 采纳率: 0%
浏览 10

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

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-08-08 06:02
    关注
    关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:JUnit4使用Assert类进行测试判断以及@Test注解属性
    评论

报告相同问题?

问题事件

  • 创建了问题 8月7日