首页 > 解决方案 > 如何对需要键盘输入的方法进行单元测试?

问题描述

所以我正在编写一个静态方法,它返回你输入的所有成绩的平均值。下面是代码:

 public static float average() throws IOException {
        
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        float sum=0;
        
        System.out.print("Number of classes: ");
        int classes = Integer.parseInt(reader.readLine());
        
        for (int i = 0; i < classes; i++) {
            
            System.out.print("input the grade: ");
            float grade = Integer.parseInt(reader.readLine());
            
            sum += grade;
            
        }
        
        float average = sum / classes;
        
        return average;
    }

我想在 Junit 中执行测试以确保这段代码是可靠的(这里的重点是了解 JUNIT,我知道代码本身并没有什么特别的)。

问题:这种方法要求我通过键盘输入值才能返回一些东西。我不知道如何更改输入流以在我的 junit 测试中采用特定值。你会建议我如何去做,或者你会建议我研究什么?

标签: javaunit-testingjunit

解决方案


将 BufferedReader 从您的方法中取出,例如将您的方法的签名更改为

 public static float average(BufferedReader reader) throws IOException {}

并在您的单元测试中为该方法提供一个阅读器,该阅读器从文件或您放置所需输入值的字符串中读取。


推荐阅读