この問題について話す前に、まず説明したいことがあります。私は4つのファイルを持つ基本的なプロジェクトを持っています:
プロジェクトには以下が含まれます。
1. testbase01.java: 次のようなテストの初期パラメーターを準備するための情報が含まれています: テスト前にドライバーを取得します...
2. test01.java:いくつかのテストを含み、このクラスは testbase01.java から拡張されます
3. test01.xml:テスト ファイル test01.java のパラメーターが含まれています。
4. pom.xml:テスト レポートを保存する場所、テスト用に呼び出される xml スイート、使用しているリスナーが含まれています...
フローは次のとおりです。
「mvn test」を使用してプロジェクトを実行します。テストは実行されますが、レポートは失敗します。pom.xml (タイムスタンプ) で構成したように、指定したフォルダーにレポートを生成できません。レポート フォルダーを固定の名前 (たとえば、私のレポート) に変更すると、機能することがわかりました。
この問題を解決するのを手伝ってもらえますか?
どこを修正すればよいかわかりません。
ありがとうございました
問題は次のとおりです。
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running TestSuite
...
... TestNG 6.8.2beta_20130330_0839 by Cédric Beust (cedric@beust.com)
...
LOCAL URL IS http://192.168.10.26:8000/enigma/candidate/index#candidates
NAME= Hoang
[TestNG] Reporter org.uncommons.reportng.JUnitXMLReporter@584534b2 failed
org.uncommons.reportng.ReportNGException: Failed generating JUnit XML report.
at org.uncommons.reportng.JUnitXMLReporter.generateReport(JUnitXMLReporter.java:83)
at org.testng.TestNG.generateReports(TestNG.java:1115)
at org.testng.TestNG.run(TestNG.java:1074)
at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:217)
at org.apache.maven.surefire.testng.TestNGXmlTestSuite.execute(TestNGXmlTestSuite.java:84)
at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:92)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
**Caused by: java.io.FileNotFoundException: D:\WORK\Workspace\bmp\test.reports\20131003-1346\xml\testsample.test01_results.xml (The system cannot find the path specified)**
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:212)
at java.io.FileOutputStream.<init>(FileOutputStream.java:165)
at java.io.FileWriter.<init>(FileWriter.java:90)
at org.uncommons.reportng.AbstractReporter.generateFile(AbstractReporter.java:99)
at org.uncommons.reportng.JUnitXMLReporter.generateReport(JUnitXMLReporter.java:77)
... 8 more
[TestNG] Reporter org.uncommons.reportng.HTMLReporter@41ce5a9 failed
org.uncommons.reportng.ReportNGException: Failed generating HTML report.
This is my first test
This is my second test
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 20.441 sec - in TestSuite
at org.uncommons.reportng.HTMLReporter.generateReport(HTMLReporter.java:117)
at org.testng.TestNG.generateReports(TestNG.java:1115)
at org.testng.TestNG.run(TestNG.java:1074)
at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:217)
at org.apache.maven.surefire.testng.TestNGXmlTestSuite.execute(TestNGXmlTestSuite.java:84)
at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:92)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Caused by: java.io.FileNotFoundException: D:\WORK\Workspace\bmp\test.reports\20131003-1346\html\index.html (The system cannot find the path specified)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:212)
at java.io.FileOutputStream.<init>(FileOutputStream.java:165)
at java.io.FileWriter.<init>(FileWriter.java:90)
at org.uncommons.reportng.AbstractReporter.generateFile(AbstractReporter.java:99)
at org.uncommons.reportng.HTMLReporter.createFrameset(HTMLReporter.java:129)
at org.uncommons.reportng.HTMLReporter.generateReport(HTMLReporter.java:104)
... 8 more
1.testbase01.java:
package common;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.ITestContext;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Parameters;
public class testbase01{
@Parameters({"localurl"})
@BeforeSuite(alwaysRun = true)
public void beforeSuite(ITestContext context, String localurl){
// get all UI controls
System.out.println("LOCAL URL IS "+localurl);
try
{
//init web driver
WebDriver driver = new FirefoxDriver();
driver.get(localurl);
// add driver into context. This is used for ScreenshotHTMLReporter
context.setAttribute("driver", driver);
}
catch (Exception ex)
{
Assert.assertTrue(false,ex.getMessage());
}
}
}
2.test01.java:
package testsample;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import common.TestBase;
import common.testbase01;
public class test01 extends testbase01 {
@Parameters({"user"})
@Test
public void getUser(String user)
{
System.out.println("NAME= " + user);
}
@Test
public void test01_no01()
{
System.out.println("This is my first test");
}
@Test
public void test01_no02()
{
System.out.println("This is my second test");
}
}
3.test01.xml:
<?xml version="1.0" encoding="UTF-8"?>
<suite name="test01" verbose="3" parallel="false">
<parameter name="localurl" value="http://192.168.10.26:8000/enigma/candidate/index#candidates"/>
<test name="test01">
<parameter name="user" value="Hoang"/>
<classes>
<class name="testsample.test01"/>
</classes>
</test>
</suite>
4.pom.xml:
<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>BasicMavenProj</groupId>
<artifactId>bmp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<timestamp>${maven.build.timestamp}</timestamp>
<maven.build.timestamp.format>yyyyMMdd-HHmm</maven.build.timestamp.format>
<test.suite.dir>test.suites</test.suite.dir>
<test.report.dir>test.reports</test.report.dir>
</properties>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.5</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.33.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>2.33.0</version>
</dependency>
<dependency>
<groupId>org.uncommons</groupId>
<artifactId>reportng</artifactId>
<version>1.1.2</version>
<exclusions>
<exclusion>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<executions>
<execution>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>${test.suite.dir}/test01.xml</suiteXmlFile>
</suiteXmlFiles>
<reportsDirectory>${test.report.dir}/${timestamp}</reportsDirectory>
<properties>
<property>
<name>usedefaultlisteners</name>
<value>false</value>
</property>
<property>
<name>listener</name>
<value>org.uncommons.reportng.HTMLReporter,org.uncommons.reportng.JUnitXMLReporter</value>
<!-- <value>com.validant.enigma3.reports.ScreenshotHTMLReporter,org.uncommons.reportng.JUnitXMLReporter</value>-->
</property>
</properties>
<systemPropertyVariables>
<test.screenshot.dir>${test.report.dir}/${timestamp}</test.screenshot.dir>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
</project>