Selenium Java(maven项目):TestNG结果与ReportNG不同

我尝试运行testng.xml ,结果如下:

===============================================

默认测试

测试运行:14,失败:6,跳过:0

默认套件

总测试运行:14,失败:6,跳过:0

===============================================

现在,我禁用了deafult TestNG监听器并在testng.xml添加了ReportNG testng.xmltestng.xml 。 看起来像这样:

                

按照这些步骤,我在maven的pom.xml添加了velocityguicereportng依赖项。

执行testsuite testng.xml ,创建了以下文件夹(标记为红色框)。

在此处输入图像描述

打开index.html ,结果如下: 在此处输入图像描述

正如预期的那样,ReportNG应该创建一个输出文件夹,在我的场景中没有注意到。 其次,结果不同。

另外,报告index.html看起来不应该是它应该是多少。 有人能说出什么问题吗?

一些细节供您参考:

操作系统:Windows 7

Guice.jar版本: guice-4.1.0

ReportNG版本: reportng-1.1.4

速度版本: velocity-dep-1.4

TestNG版本: testng-6.11

Selenium版本: selenium-java-3.5.3

Eclipse: eclipse oxygen

我的测试用例如下:

 public class MwSites { WebDriver driver; @BeforeTest public void setup () { System.setProperty("webdriver.chrome.driver", "F:\\Automation\\Drivers\\Selenium Drivers\\chromedriver_win32\\chromedriver.exe"); ChromeOptions options = new ChromeOptions(); options.addArguments("test-type"); options.addArguments("start-maximized"); options.addArguments("--js-flags=--expose-gc"); options.addArguments("--enable-precise-memory-info"); options.addArguments("--disable-popup-blocking"); options.addArguments("--disable-default-apps"); options.addArguments("test-type=browser"); options.addArguments("disable-infobars"); driver = new ChromeDriver(options); driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); } @AfterTest public void Quit () throws InterruptedException { driver.quit(); } @Test(priority = 0) public void MI_Demo () throws InterruptedException { driver.navigate().to("http://demo.movingwalls.com/mi/#/login"); Assert.assertEquals("Login", driver.getTitle()); if (driver.getTitle()=="Login"){ System.out.println("Failed to access MI in demo environment"); } else{ System.out.println("MI is successfully accessed in demo environment"); } } 

当你的测试被跳过时,你可能想先检查测试结果xml以找出根本原因(例外)。

另一方面,我只是想知道使用图书馆的初衷是什么,这个图书馆已经维持了4年了? ReportNG已经死了。 这是事实。 如果你看看它的来源,你会看到它使用的是哪个TestNG版本(6.8)。 您可以轻松地假设其记者基于旧的TestNG API。

当您将TestNG 6.11作为依赖项添加时,jar发生地狱的可能性非常高。 如果这是你问题的根本原因,我不会感到惊讶。

如果您还没有决定使用哪种报告系统,我建议您查看一个现代的Allure 2框架。

否则,只需先检查堆栈跟踪以了解问题的根本原因。

我能够使用指定的版本解决这个问题。

默认情况下,ReportNG报告是在surefire插件配置的target/surefire-reports surefire target/surefire-reports文件夹下生成的。 这可以通过surefire配置进行更改。

您可以添加任何测试类,但为了方便起见,我只包括pom文件和我使用过的两个示例类。

  4.0.0 com.rationaleemotions 46923243 1.0-SNAPSHOT jar 46923243 http://maven.apache.org  UTF-8 1.8 1.8     org.seleniumhq.selenium selenium-java 3.5.3    com.google.inject guice 3.0   org.testng testng 6.12 test    org.uncommons reportng 1.1.4 test      org.apache.maven.plugins maven-surefire-plugin 2.20.1    src/test/resources/testng.xml    usedefaultlisteners false         jcenter jcenter http://jcenter.bintray.com    

我用过的测试类

 package com.rationaleemotions; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import java.util.concurrent.TimeUnit; public class MwSites { private WebDriver driver; @BeforeClass public void setup() { ChromeOptions options = new ChromeOptions(); options.addArguments("test-type"); options.addArguments("start-maximized"); options.addArguments("--js-flags=--expose-gc"); options.addArguments("--enable-precise-memory-info"); options.addArguments("--disable-popup-blocking"); options.addArguments("--disable-default-apps"); options.addArguments("test-type=browser"); options.addArguments("disable-infobars"); driver = new ChromeDriver(options); driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); } @AfterClass public void Quit() throws InterruptedException { driver.quit(); } @Test public void MI_Demo() throws InterruptedException { driver.navigate().to("http://demo.movingwalls.com/mi/#/login"); Assert.assertEquals("Login", driver.getTitle()); if ("Login".equals(driver.getTitle())) { System.out.println("Failed to access MI in demo environment"); } else { System.out.println("MI is successfully accessed in demo environment"); } } } 
 package com.rationaleemotions; import org.testng.Assert; import org.testng.Reporter; import org.testng.annotations.Test; public class TestClassWithMultipleResults { @Test public void testMethodWillPass() { Reporter.log("This test method will pass", true); } @Test public void testMethodWillFail() { Reporter.log("This test method will fail", true); Assert.fail(); } @Test(dependsOnMethods = "testMethodWillFail") public void testMethodWillSkip() { } } 

我使用的套件xml:

                 

以下是ReportNG报告的屏幕截图

概述摘要

概述细节

索引摘要

索引详情