当前位置: 首页 > 知识库问答 >
问题:

TestNg报告者信息在surefire测试结果输出中重复

章禄
2023-03-14

我试图使用TestNg reporter信息组合一个测试报告以包含自定义信息,但遇到了一个问题,surefire报告重复了我使用reporter.log()输出的任何内容。

如果我使用TestNg Eclipse插件运行这些报告,我会在reporter output(在TestNg测试输出中)下得到以下输出:

自定义输出在这里

自定义输出在这里

自定义输出在这里

下面是创建输出的失败重写:

public class TestListeners extends TestListenerAdapter{

    @Override
    public void onTestFailure(ITestResult tr)
    {
        Reporter.log("Custom output goes here");
    }

}
public class ReportTest extends TestBase{

    @Test(groups="report")
    public void reportTest()
    {
        driver.navigate().to("https://www.google.com");
        driver.findElement(By.id("no-element-here"));
    }
}
@Listeners({TestListeners.class})
private Configuration config = new Configuration();
protected String base_url;
public static WebDriver driver;

@BeforeClass(alwaysRun=true)
public void setUp()
{
    driver = selectDriver();
    driver.manage().timeouts().implicitlyWait(config.timeout, TimeUnit.SECONDS);
    if(config.maximise)
    {
        driver.manage().window().maximize();
    }
    base_url = config.base_url;
}

@AfterClass(alwaysRun=true)
public void tearDown()
{
    driver.quit();
}
<build>
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.2</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.18</version>
        <configuration>
        </configuration>
    </plugin>
</plugins>
<dependencies>
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>3.8.1</version>
  <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>6.1.1</version>
</dependency>
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>2.44.0</version>
</dependency>

我只是不明白为什么它在TestNg中运行时工作得很好,但在SureFire中运行时却随机重复。任何帮助都将不胜感激!提前感谢!

共有1个答案

薄欣怿
2023-03-14

我已经弄清楚了这里发生了什么,以防将来有人偶然发现。

看起来,每次出现故障,调用重写时,都会对存在的每个实例调用重写。例如,如果@Listeners标记存在于3个类中,则输出将重复三次。

我通过删除类中存在的所有@Listener标记来解决这个问题,并将以下内容添加到嵌套在SureFire插件中的pom.xml中:

<properties>
    <property>
        <name>listener</name>
        <value>utilities.TestOverride</value>
    </property>
</properties>
 类似资料:
  • 问题: TestNG正在运行所有172个测试,但是它只报告了81个测试运行,没有报告一些失败(实际上有两个测试失败,但只报告了一个)。 似乎未报告的测试是有什么方法可以让TestNG正确识别这些测试并正确报告它们的结果吗?

  • 安装程序:我有一个扩展IRetryAnalyzer的类,并实现了一个简单的重试逻辑,覆盖了以下方法:public boolean retry(ITestResult result){ 提前道谢。

  • 我正在使用ITestListener,用于生成范围报告的范围管理器。它工作正常。我正在从另一个方法调用5@Test方法。报告(TestNG 请检查我的示例代码:建议任何其他方法来获得报告 我的TestNG XML文件: 我的驱动程序脚本:

  • 我现在的Jenkins运行多个构建。每个构建/运行都将创建自己的testng-results.xml(target/surefire-reports/testng-results.xml) 我检查了Jenkins job主页上的HTML报告的结果(该报告只显示最新构建/运行的报告)。 不管怎样,为了得到这个?

  • 我需要从maven运行一系列测试。测试通过一系列自定义创建的脚本运行,这些脚本运行类似于qunit的东西,输出junit风格的xml文件,然后复制到target/surefire reports目录中。我想做的是让surefire插件打印我自己运行的测试结果。目前,surefire报告没有运行任何测试(正确,因为它实际上没有运行测试)。 我希望surefire能够找到由我的测试系统创建的junit

  • 问题内容: 问题 Jenkins未拾取junit格式的报告,从而导致该报告未在项目的状态屏幕中列出。 细节 格式为junit的报告数据由称为Karma- runner(以前称为Testacular)的测试框架生成。被忽略的文件创建在-与创建surefire生成的报告的位置相同的位置。报表数据的外观几乎相同所产生的行家万无一失插件除了它的父元素,而不是- 是什么万无一失生成的报告有一个报告文件的父元