如何用Java编写JUnit测试,该测试检查依赖于循环中用户输入的一个特定打印
我尝试用IntelliJ为应用程序编写JUnit测试,该应用程序修改字符串。现在我如何在控制台上测试一个特定的打印 假设起始字符串存储在args[0]中为“Hello World”,我们有一个方法可以更改字符串中的单个字母。该字符串将在方法执行后打印出来如何用Java编写JUnit测试,该测试检查依赖于循环中用户输入的一个特定打印,java,unit-testing,testing,intellij-idea,junit,Java,Unit Testing,Testing,Intellij Idea,Junit,我尝试用IntelliJ为应用程序编写JUnit测试,该应用程序修改字符串。现在我如何在控制台上测试一个特定的打印 假设起始字符串存储在args[0]中为“Hello World”,我们有一个方法可以更改字符串中的单个字母。该字符串将在方法执行后打印出来 public class modifyString { public static void main(String[] args) { Scanner scanner = new Scanner(System.i
public class modifyString {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(true) {
// Print the string
System.out.println(args[0]);
// Wait for a userinput that only contains two chars,
// e.g. '0h' <- 'Change the index 0 to 'h''
// (the order of the chars is unimportant)
String input = scanner.nextLine();
if(preconditionFullfilled(input)) {
executeOperation(input, args);
}
}
}
}
公共类修改字符串{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
while(true){
//打印字符串
System.out.println(args[0]);
//等待仅包含两个字符的userinput,
//例如,“0h”据我所知,如果您使用System.out.
进行打印,则无法测试已打印的输出。我认为,如果您使用另一个PrintStream类,理论上是可能的,但我强烈建议您以使用字符串或StringBuilder作为返回类型并执行以下操作的方式更改代码:单独打印。因此您可以轻松地为所有方法编写单元测试
此外,如果您想测试写入的输出,您可以将输出写入一个.txt文件,并将内容与预期的结果文件进行比较。但是,这会进入集成测试,在这里基本上是多余的
我希望这对你有点帮助。
如果您还有其他问题,请询问。
当做
Kai据我所知,如果您使用System.out.
进行打印,则无法测试已打印的输出。我认为如果您使用另一个PrintStream类,理论上是可能的,但我强烈建议您以将字符串或StringBuilder用作返回类型并执行printi的方式更改代码因此,您可以轻松地为所有方法编写单元测试
此外,如果您想测试写入的输出,您可以将输出写入一个.txt文件,并将内容与预期的结果文件进行比较。但是,这会进入集成测试,在这里基本上是多余的
我希望这对你有点帮助。
如果您还有其他问题,请询问。
当做
卡伊不应该测试控制台的打印。您可以考虑测试方法调用,其结果打印到控制台。您不应该测试控制台的打印。您可以考虑测试方法调用,其结果打印到控制台。