当前位置: 首页 > 面试题库 >

JUnit:如何模拟System.in测试?

阮昊阳
2023-03-14
问题内容

我有一个Java命令行程序。我想创建JUnit测试用例以进行模拟System.in。因为当我的程序运行时,它将进入while循环并等待用户输入。如何在JUnit中模拟呢?


问题答案:

从技术上讲,可以进行切换System.in,但是总的来说,不直接在代码中调用它,而是添加一层间接层,这样输入源就可以从应用程序的某个位置进行控制,这样会更健壮。确切地讲,这是实现的详细信息-依赖项注入的建议很好,但是你不一定需要引入第三方框架。例如,你可以从调用代码传递I / O上下文。

如何切换System.in

String data = "Hello, World!\r\n";
InputStream stdin = System.in;
try {
  System.setIn(new ByteArrayInputStream(data.getBytes()));
  Scanner scanner = new Scanner(System.in);
  System.out.println(scanner.nextLine());
} finally {
  System.setIn(stdin);
}


 类似资料:
  • 本节介绍与JUnit Framework相关的各种模拟测试。 您可以在本地计算机上下载这些示例模拟测试,并在方便时离线解决。 每个模拟测试都提供一个模拟测试密钥,让您自己验证最终得分和评分。 JUnit Mock Test I 问题1 - 以下哪项描述正确测试? A - 测试是检查应用程序功能的过程,是否按照要求运行。 B - 测试是单个实体(类或方法)的测试。 C - 以上两者。 D - 以上都

  • 我有一种方法可以将文件上传到Amazon S3。我正在尝试为此方法编写JUnit,但在S3AsyncClient上获取NullPointerException: 我的班级: S3UploadData类对象的输入:` @Getter@allargsconstuctor 你能帮我写Junit for uploadFile方法吗?

  • 澄清一下:我选择使用主题的一个实际的嵌入式实例,以便用一个实际的实例进行测试,而不是在mockito中嘲弄hand off。这样我就可以测试我的自定义编码器和解码器是否能够正常工作,并且当我使用一个真实的kafka实例时不会失败。

  • 我完全被困在java测试中;它是关于通过测试方法将字符'a'发送到JFrame组件的JTextField。 JFrame类实现KeyListener接口,并以此重写KeyPressed、KeyTyped和KeyReleased。同时,我将JTextField的所有按键转移到JFrame;在JFrame构造函数中,我有: 我想测试这种行为,然后模拟JTextField中类型a字符的操作。 我还尝试了

  • 我有一个jUnit测试,测试我的一个函数。在这个函数中,我调用了另一个类的方法,我想用mockito模拟这个方法。然而,我似乎不能实际嘲笑这一点。下面是我的jUnit测试的样子: 编辑:在我的MainClassImTesting()中。我正在调用的test()函数,它调用authenticateUser()并向它传递一个hashMap。

  • 我正在使用jUnit 5为我的Spring引导服务类做单元测试。在服务类中,我是自动装配对象,用于调用其他类中的方法。在测试用例中,@Mock没有为@Autow的类创建对象。在这里,我给出了我的代码。 我的服务级别: 我的组件类 : 我的单元测试类: pom.xml 文件 : 在运行此测试时,我在imageProcessor.dummy(name)中获得空指针异常;