2011-08-13 36 views
1

我遇到了我的项目问题。在Netbeans中运行时,用户交互似乎很好。但是,当我运行使用mvn测试它不。我看到了命令行菜单,但我没有提示做出选择。当我强制终止该项目时,出现“找不到线路”错误。Maven an java.io.scanner(System.in)

任何想法?我很难过。

不工作的线基本上是:

System.out.print("1) Print String\n" 
+ "0) Exit\n" 
+ "Enter Selection: "); 
String line = (new java.util.Scanner(System.in)).nextLine(); 

我看到输出到这个类似:

1) Print String 
0) Exit 

但我没有看到“输入选择:”和它doesn提示输入字符串。我终止并得到“找不到线”,虽然我取消执行后,我看到整个字符串int他“测试结果窗口”。

回答

1

单元测试暂停用户交互是不正常的。如果它奇怪地行为,我不会感到惊讶。我希望测试库不会真正预测这种事情。

+0

虽然你说这是不正常的,有没有办法让用户与此交互?还是有更好的做法?我会假设,因为应用程序需要在mvn测试中运行,并且该分配需要用户交互,它至少需要某种形式的交互。 – Rjs222

+0

1)使用户交互层尽可能薄。这可以很容易地测试其他所有内容。 2)具有创造性。您说这个任务需要用户交互,但您可以预先测试一些输入。如果System.in是您的输入机制,那只是一个流。建立你的类可以使用任何任意的流来输入。然后,您可以在测试期间提供您想要的任何类型的流,从而消除手动交互的需要。 –

0

实际上,在执行JUnit测试时,不应该与用户交互。测试应设计为自动连续运行。如果你想用两个单独的值测试底层代码,应该实现两个测试,并用它们自己的值调用每个底层代码。这应该涵盖提供给用户的两个选项。