我尝试运行Store
,结果是:
===============================================
默认测试
测试运行:14,失败:6,跳过:0
默认套件
总测试运行:14,失败:6,跳过:0
===============================================
现在,我禁用了deafult TestNG侦听器并在testng.xml
中添加了ReportNG列表器。 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 -->
按照这些步骤,我在maven&#39; velocity
中添加了guice
,reportng
和pom.xml
个依赖关系。
执行测试套件testng.xml
后,创建了以下文件夹(标记为红色框)。
正如预期的那样,ReportNG应该创建一个输出文件夹,这在我的场景中没有被注意到。其次,结果不同。
此外,报告index.html
并未查看其实际情况。有人可以说出错误吗?
一些细节供您参考:
操作系统:Windows 7
Guice.jar版本:guice-4.1.0
ReportNG版本:reportng-1.1.4
Velocity版本: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");
}
}
答案 0 :(得分:1)
当您的测试被跳过时,您可能需要首先检查测试结果xml以找出根本原因(例外)。
另一方面,我只是想知道使用图书馆的初衷是什么,而图书馆的维护期限为4年? ReportNG已经死了。这是事实。如果你看看它的来源,你会看到它使用的是哪个TestNG版本(6.8)。您可以轻松地假设其记者基于旧的TestNG API。
当你将TestNG 6.11作为依赖项添加时,jar发生地狱的可能性非常高。如果它是您问题的根本原因,我不会感到惊讶。
如果您尚未决定使用哪种报告系统,我建议您查看现代Allure 2框架。
否则,只需先检查堆栈跟踪,了解问题的根本原因。
答案 1 :(得分:0)
我能够使用指定版本解决此问题。
默认情况下,ReportNG报告是在surefire插件配置的target/surefire-reports
文件夹下生成的。这可以通过surefire配置进行更改。
您可以添加任何测试类,但为了方便起见,我只包括pom文件和我使用过的两个示例类。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.rationaleemotions</groupId>
<artifactId>46923243</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>46923243</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/velocity/velocity-dep -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.5.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.inject/guice -->
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.12</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.uncommons/reportng -->
<dependency>
<groupId>org.uncommons</groupId>
<artifactId>reportng</artifactId>
<version>1.1.4</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
<configuration>
<!-- Suite testng xml file to consider for test execution -->
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
</suiteXmlFiles>
<properties>
<property>
<name>usedefaultlisteners</name>
<value>false</value>
</property>
</properties>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>jcenter</id>
<name>jcenter</name>
<url>http://jcenter.bintray.com</url>
</repository>
</repositories>
</project>
我用过的测试类
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:
<?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="com.rationaleemotions.MwSites"/>
<class name="com.rationaleemotions.TestClassWithMultipleResults"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
以下是ReportNG报告的截图