如何显示当前执行的测试方法的名称

时间:2013-07-06 20:07:17

标签: junit

我有更多的测试和想要(通过maven触发)在stdout / stderr上看到,当前执行了哪种测试方法。

我不想或不需要在测试本身内部,而是按照正在发生的事情进行操作 - 有点像IntelliJ那样用圆圈然后变成红色或绿色。

是否有命令行选项来执行此操作,或者我是否必须编写自己的测试运行器,这对我来说是这样做的?

2 个答案:

答案 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方法。