java - 为什么 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);
}
}
这是测试类。
请帮助我!!!
解决方案
推荐阅读
- php - 类在本地工作,但在部署时找不到
- amazon-ec2 - 如何访问使用 Bitnami 创建的远程 CouchDB
- javascript - 使用搜索叉再次显示按钮
- amazon-web-services - AWS 负载均衡器 nginx 未找到 404
- r - 初学者 R:如何使用两个转置数据集创建比较箱线图?
- reactjs - 使用扩展为组件的类时,React 中的菜单材料 UI 组件不起作用
- node.js - Puppeteer 驱动的无头铬立即在 Raspberry Pi 4 中关闭
- python - 我正在尝试将大学橄榄球队名册刮到一个 excel 文件中,需要帮助来组织数据
- python - 更改一个(或多个)刻度的长度
- sql - 由于错误 0x80070643,无法安装 Microsoft SQL Server Management Studio