4

我有更多的测试,并希望(通过 maven 触发)在 stdout/stderr 上查看当前执行的测试方法。

我不希望或不需要在测试本身中这样做,而是关注正在发生的事情 - 有点像 IntelliJ 用然后变成红色或绿色的圆圈来做这件事。

是否有命令行选项可以执行此操作,或者我是否必须编写自己的测试运行程序,这对我有用?

4

2 回答 2

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 {}
}

然后,在万无一失的情况下,您可以指定一个自定义侦听器,使用:

<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 插件,使用 JUnit,使用自定义侦听器和报告器

于 2013-07-06T20:29:22.007 回答
3

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

于 2016-06-27T01:48:15.723 回答