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

时间:2017-01-06 07:17:26

标签: java maven

我正在使用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(); 

为什么会这样?我怎么解决呢?

1 个答案:

答案 0 :(得分:0)

您将 UnitTest JUnit框架执行的测试混合在一起。

根据定义, UnitTest 是一些额外的代码,可以自动验证生产代码的行为,这尤其意味着无需用户交互

您有三种选择(按需要的顺序):

  1. 将此测试排除在maven构建期间执行的测试中。 您可以通过配置maven-surefire-plugin

  2. 来实现
  3. 也可以自动化用户交互。

  4. 改善您的单位测试 通过不分离被测单元,您的测试可能会失去 UnitTest 的特性。

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

  5. 我自己会建议#3。