首页 > 解决方案 > 为什么 when().thenReturn 总是返回 NullPointerExeption?

问题描述

我有一个方法应该在输入中读取 4 次并在数组中执行此操作。很好,行得通。我重构了所有内容以使用模拟对象进行单元测试。现在方法 when().thenReturn 总是以 NullPointerExeption 结束。源代码来自以下 3 个不同的类:

import java.util.Scanner;

public class SystemClass {
    Scanner valueIn = new Scanner(System.in);

    public String getInput(){
        return valueIn.nextLine();
    }
}

这是提取的 ScannerClass

import java.util.Arrays;

public class GuessRefactor {
    private SystemClass systemObj;

    public String[] guess(SystemClass systemObj){
        int k = 1;
        String[] guess = new String[4];
        for(int i = 0; i < 4;i++){
            k = 1;
            while(k==1) {
                System.out.println("now the " + (i + 1) + "color ");
                guess[i] = systemObj.getInput();
                if(guess[i].equals("red")||guess[i].equals("blue")||guess[i].equals("yellow")||guess[i].equals("green")||guess[i].equals("purple")||guess[i].equals("brown")){
                    k = 0;
                }
            }
        }
        return guess;
    }

    public static void main(String[] args) {
        System.out.println(Arrays.toString(new GuessRefactor().guess(new SystemClass())));
    }
}

这是猜测(它的策划者)

import org.junit.Assert;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;

import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.when;

@RunWith(MockitoJUnitRunner.class)
class TestClass {
    @Mock
    SystemClass a;

    @Test
    public void test() {
        String b = "rot";
        GuessRefactor guessRefactor = new GuessRefactor();
        //Mockito.when(a.getInput()).thenReturn(b);
        Mockito.when(a.getInput()).thenReturn(b);
        String[] expectedOutput = {"red", "red", "red", "red",};
        String[] output = guessRefactor.guess(a);
        Assert.assertArrayEquals(expectedOutput, output);
    }
}

这是测试类。

请帮助我!!!

标签: javaunit-testingjunitnullpointerexceptionmocking

解决方案


推荐阅读