4

我听说 ReportNG 创建的报告比 TestNG 的正常报告更好。我尝试创建 ReportNG 报告,但失败了。我正在使用 Eclipse,我已经下载了 ReportNG,并将 reportng-1.1.3.jar 和 velocity-dep-1.4.jar 添加到类路径中,并编写了 testng-suite.xml,如下所示:

<suite name="SA" verbose="10">
<listeners>
  <listener class-name="org.uncommons.reportng.HTMLReporter" />
  <listener class-name="org.uncommons.reportng.JUnitXMLReporter" />
</listeners>
...
</suite>   

当我执行时,我可以看到 TestNG 默认报告而不是 ReportNG 报告。我还应该做什么来获得 ReportNG 的报告(例如扩展任何类或实现侦听器或编写代码片段)?

另外我听说我必须使用命令 useDefaultListeners="false" ,但是我应该在 testng-suite.xml 中包含什么?每个人都在谈论 ANT,但我个人不喜欢使用它。那么有没有办法将上述命令包含到 testng-suite.xml 中?

4

3 回答 3

3

我是 ReportNG 的作者。您无需编写任何 Java 代码即可使其工作。您只需要能够从您使用的任何工具向 TestNG 注册侦听器。

我只使用过 Ant 的 ReportNG,但其他人已经将它与其他构建系统(如 Maven 和 Gradle)一起使用。我不知道是否有任何特定于 Selenium 的东西会阻止它工作。您是否收到任何错误消息?我要检查的第一件事是确保 ReportNG JAR 在类路径中。

我什至没有意识到您可以在testng.xml文件中指定 TestNG 侦听器。但是,我刚刚修改了我的示例报告,以这种方式而不是在 Ant 构建文件中指定侦听器,并且它工作正常,因此问题可能出在您从 Selenium 配置 TestNG 的方式上。

于 2011-06-16T14:29:32.540 回答
3

你是如何从 Eclipse 启动的?您应该右键单击该 XML 文件并选择“Run as... TestNG 套件”。我假设这就是你正在做的事情。

使用默认侦听器应该不会对您看到的问题产生任何影响,我猜有些人会使用它,因为如果他们使用 ReportNG,他们不关心 TestNG 生成的任何其他侦听器。话虽如此,如果您想从 Eclipse 中执行此操作,您可以简单地编辑启动套件时创建的启动配置,如上所示,并将“ -usedefaultlisteners false”添加到参数框中。

于 2011-06-16T16:39:42.100 回答
3

要禁用默认侦听器,

Goto Eclipse Project-> Properties -> TestNG -> Disable deafult listeners.

运行后会出现以下错误:

java.lang.NoClassDefFoundError: com/google/inject/Module 
        at java.lang.Class.getDeclaredMethods0(Native Method) 
        at java.lang.Class.privateGetDeclaredMethods(Unknown Source) 
        at java.lang.Class.privateGetPublicMethods(Unknown Source) 
        at java.lang.Class.getMethods(Unknown Source) 

要解决这个问题,请下载 google-guice-3.0.zip 并将 guice-3.0.jar 粘贴到您的类路径中。

现在运行并检查工作区/test-output/html 中的报告。

于 2011-08-12T07:10:31.193 回答