3

我正在尝试使用带有 maven surefire 插件的 TestNG 自定义报告器。我已经有一个自定义侦听器,并且似乎被采纳了。但是,看起来根本没有使用自定义报告器:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <testFailureIgnore>false</testFailureIgnore>
        <properties>
            <property>
                <name>listener</name>
                <value>com.mystuff.test.TestNGListener</value>
            </property>
            <property>
                <name>reporter</name>
                <value>com.mystuff.test.MyEmailableReporter</value>
            </property>
        </properties>
    </configuration>
</plugin>

知道为什么会这样吗?

4

1 回答 1

7

我想通了。看起来以下内容根本不起作用:

<property>
    <name>reporter</name>
    <value>com.mystuff.test.MyEmailableReporter</value>
</property>

尽管有相反的文件。在TestNG该类中,似乎有一个名为 的方法TestNG#addListener(IReporter listener),与它的名称相反,它接受一个实现的报告IReporter。Maven Surefire (v2.12.1) 调用此方法来添加监听器和报告。但是,它不会在具有 name 的属性下查找报告reporter。相反,您必须将自定义报告器添加到listener属性中:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <testFailureIgnore>false</testFailureIgnore>
        <properties>
            <property>
                <name>listener</name>
                <value>com.mystuff.test.TestNGListener,com.mystuff.test.MyEmailableReporter</value>
            </property>
        </properties>
    </configuration>
</plugin>

不是很直观。

于 2012-08-06T23:40:53.623 回答