我有更多的测试,并希望(通过 maven 触发)在 stdout/stderr 上查看当前执行的测试方法。
我不希望或不需要在测试本身中这样做,而是关注正在发生的事情 - 有点像 IntelliJ 用然后变成红色或绿色的圆圈来做这件事。
是否有命令行选项可以执行此操作,或者我是否必须编写自己的测试运行程序,这对我有用?
我有更多的测试,并希望(通过 maven 触发)在 stdout/stderr 上查看当前执行的测试方法。
我不希望或不需要在测试本身中这样做,而是关注正在发生的事情 - 有点像 IntelliJ 用然后变成红色或绿色的圆圈来做这件事。
是否有命令行选项可以执行此操作,或者我是否必须编写自己的测试运行程序,这对我有用?
您最好的选择可能是RunListener,您可以将其插入 Maven:
RunListener
监听测试事件,如测试开始、测试结束、测试失败、测试成功等。
public class RunListener {
public void testRunStarted(Description description) throws Exception {}
public void testRunFinished(Result result) throws Exception {}
public void testStarted(Description description) throws Exception {}
public void testFinished(Description description) throws Exception {}
public void testFailure(Failure failure) throws Exception {}
public void testAssumptionFailure(Failure failure) {}
public void testIgnored(Description description) throws Exception {}
}
然后,在万无一失的情况下,您可以指定一个自定义侦听器,使用:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.10</version>
<configuration>
<properties>
<property>
<name>listener</name>
<value>com.mycompany.MyResultListener,com.mycompany.MyResultListener2</value>
</property>
</configuration>
</plugin>
Matthew 为 JUnit 编写的内容和 TestNG 也有类似的界面。
我正在使用TestNG,并将详细程度设置为高对我来说可以完成这项工作:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<properties>
<property>
<name>surefire.testng.verbose</name>
<value>10</value>
</property>
</properties>
</configuration>
</plugin>
</plugins>
</build>
它记录在这里http://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html
详细级别介于 0 和 10 之间,其中 10 是最详细的。您可以指定 -1,这会将 TestNG 置于调试模式(不再切断堆栈跟踪等)。默认级别为 0。
此处也已回答Set TestNG's verbosity level from Maven
然后,输出包含测试进度等行:
[TestNG] 调用:“Surefire 测试” - org.example.MyTest.myMethod(java.lang.String, java.lang.String)(value(s) ...
还提到了@BeforeClass 和@AfterClass 方法。