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

San*_*hit 6 java testng selenium maven reportng

我试过跑步testng.xml,结果如下:

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

默认测试

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

默认套件

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

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

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

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
    <listeners>
        <listener class-name="org.uncommons.reportng.HTMLReporter" />
        <listener class-name="org.uncommons.reportng.JUnitXMLReporter" />
    </listeners>
    <test name="Test">
        <classes>
            <class name=".URL_Daily" />
        </classes>
    </test> <!-- Test -->
</suite> <!-- Suite -->
Run Code Online (Sandbox Code Playgroud)

下面的步骤,我加入velocity,guicereportng在Maven的依赖关系pom.xml.

执行测试套件后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 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");
    }
}
Run Code Online (Sandbox Code Playgroud)

Ser*_*rol 1

当您的测试被跳过时,您可能需要首先检查测试结果 xml 以找出根本原因(异常)。

另一方面,我只是想知道使用一个已经四年没有维护的库的初衷是什么?ReportNG 已死。这是事实。如果您查看其源代码,您将看到它使用哪个 TestNG 版本(6.8)。您可以很容易地假设它的报告器基于旧的 TestNG API。

当您添加 TestNG 6.11 作为依赖项时,出现 jar hell 的概率相当高。如果这是您问题的根本原因,我不会感到惊讶。

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

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