我有更多的测试和想要(通过maven触发)在stdout / stderr上看到,当前执行了哪种测试方法。
我不想或不需要在测试本身内部,而是按照正在发生的事情进行操作 - 有点像IntelliJ那样用圆圈然后变成红色或绿色。
是否有命令行选项来执行此操作,或者我是否必须编写自己的测试运行器,这对我来说是这样做的?
答案 0 :(得分:3)
你最好的选择可能是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 {}
}
然后,在surefire中,您可以使用以下命令指定自定义侦听器:
<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>
这是Maven Surefire Plugin, Using JUnit, Using custom listeners and reporters
答案 1 :(得分:1)
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] INVOKING:&#34; Surefire测试&#34; - org.example.MyTest.myMethod(java.lang.String中, java.lang.String)(value(s)...
还提到了@BeforeClass和@AfterClass方法。