Java mvn测试期间提示用户按命令行上的任意键

Java mvn测试期间提示用户按命令行上的任意键,java,maven,Java,Maven,我正在使用maven运行单元测试。在某一点上,我需要暂停执行,以便测试人员做一些事情。完成后,他们需要按一个键。我的单元测试中有以下代码 try { while (true) { System.out.print("Enter something : "); inputResult = System.console().readLine(); } } catch (Exception exc) { // e

我正在使用maven运行单元测试。在某一点上,我需要暂停执行,以便测试人员做一些事情。完成后,他们需要按一个键。我的单元测试中有以下代码

try {
    while (true) {

        System.out.print("Enter something : ");
        inputResult = System.console().readLine();

    }               
} catch (Exception exc) {
    // exception handling code to 
    // print out message and stack trace        
}
运行此代码时,将捕获一个异常,该异常具有指向以下行的堆栈跟踪:

inputResult = System.console().readLine(); 
为什么会发生这种情况?我该如何解决呢?

您将UnitTest与JUnit框架执行的测试混为一谈

根据定义,UnitTest是一些额外的代码,可以自动验证生产代码的行为,特别是在没有用户交互的情况下

您有三种选择(按所需努力的顺序):

  • 从maven构建期间执行的beeing中排除此测试。 您可以通过配置

  • 也可以自动化用户交互

  • 改进单元测试。
    您的测试有可能由于未分离被测试单元而未通过单元测试的特性

    如果您因此应用了关注点分离原则,那么用户交互是在不同的单元(类/模块)中完成的,在unittests运行期间,您应该用一个模拟来替换该单元。这些mock最好是在Mockito、JMock等mock框架的支持下创建的

  • 我个人建议#3。

    “我正在使用maven运行单元测试。在某一点上,我需要暂停执行,以便测试人员执行某些操作。”这不是单元测试,将该测试从自动执行中排除。