【发布时间】:2023-03-29 00:48:01
【问题描述】:
我想使用参数 [-1,0,24,2,32] 测试方法 setDay()。
我知道扫描仪阅读器可以
String test="-1 0 24 2 32";
Scanner reader=new Scanner(test);
主要问题是无限循环和void方法。我们如何测试这种代码?这是示例代码:
public NameOfTheDay(){
int day=1;
}
{...}
public void setDay(Scanner reader) {
while (true) {
System.out.print("Day: ");
String input = reader.nextLine();
if (input.matches("\\d{2}")) {
int day = Integer.parseInt(input);
if (day > 0 && day < 32) {
this.day = day;
return;
}
}
System.out.println("Wrong day. Try again.");
}
}
感谢您的回答。
【问题讨论】:
-
您的代码完全是错误的,对于输入“ab”,该方法将永远不会返回。
-
String input = reader.nextLine();应该在 while 循环中 -
我打算在输入为数字时返回。但这不是我的问题。我想知道如何检查此方法。我搜索类似的主题,但从未得到正确的答案。 @Oneiros 对。已编辑
-
在我看来这是一个非常奇怪的单元测试。为什么要测试 java 扫描仪的功能?单元测试不应该需要用户输入,你不是在其他测试中按程序执行此代码吗?我只测试日期整数的条件......我弄错了吗?
-
你可以测试这个的唯一方法是通过模拟系统控制台(因为这是你的方法传达故障的唯一方法)。我强烈建议您以任何其他不需要这样做的方式进行。
标签: java unit-testing while-loop void junit5