当前位置: 代码迷 >> Java相关 >> 一个关于单元测试的有关问题
  详细解决方案

一个关于单元测试的有关问题

热度:17   发布时间:2016-04-22 19:42:03.0
一个关于单元测试的问题
大牛们帮看看

package Test;

import org.testng.annotations.Test;

import java.util.Random;
import java.util.Scanner;

/**
 * Created by YLL on 2015/9/17.
 */
public class TestAlgorithm {
    @Test
    public void test1() {
        int N = 10;
        int i, x;
        int f = -1;
        int[] arr = new int[N];
        System.out.println("下面是随机生成的10个数字:");
        Random s= new Random();
        for(i=0; i<N; i++) {
            arr[i] = s.nextInt(100);
            System.out.print(arr[i] +" ");
        }
        for(i=0; i<N; i++) {
            System.out.print(arr[i] +" ");
        }
        System.out.println();
        System.out.print("请输入你要找的数字:");
        Scanner input = new Scanner(System.in);
        x = input.nextInt();
        for(i=0; i<N; i++) {
            if(x==arr[i]) {
                f = i;
                break;
            }
        }
        if(f < 0) {
            System.out.println("木有找到数据!");
        }
        else {
            System.out.println("你要找的数:" + x + "在数列的第" + (f+1) + "个");
        }
    }
}



这样有错吗  怎么不能通过啊
------解决思路----------------------
试了可以通过
------解决思路----------------------
这个跟你用的IDE有关,TestNG和JUnit等测试组件,其自身也是一个java程序。可以由开发人员自己调用启动来进行单元测试。同时也可以把这些工具集成到IDE中。可以通过操作IDE来间接启动测试组件来对目标类进行单元测试。由于Scanner涉及到输入流句柄的问题,有些IDE可能没处理好,会导致在输出窗口输入不了数据。比如IDEA和eclipse这2款IDE中,测试如下图:


另外根据楼主用的Testng,我本机做了测试,自己手动启动该组件进行单元测试,是正常可以获取的。如下图:



通过测试可以排除是testng底层实现的问题。这个由IDE间接启用导致的结果,暂时找不到较好的解决方案。楼主如果是用eclipse的话,可以换成junit或者进行单元测试时,尽量别用控制台输入
就这些吧,希望能对你有所帮助!