私はSelenium WebDriver、Eclipse、TestNG、Surefireプラグインを使用しています。 pom.xmlからtestng.xmlファイルを実行できません。 mvn testを使用してpom.xmlを実行している間、src/test/Javaにあるファイルを直接実行します。
私のpom.xmlコードは
<groupId>angel</groupId>
<artifactId>Angel</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Angel</name>
<url>http://maven.Apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties>
<dependencies>
<!-- Java API to access the Client Driver Protocols -->
<dependency>
<groupId>org.seleniumhq.Selenium</groupId>
<artifactId>Selenium-Java</artifactId>
<version>2.21.0</version>
</dependency>
<!-- JExcel API is a Java library which provides the ability to read, write, and modify Microsoft Excel spreadsheets.-->
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.10</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
<!-- Java API for manipulate the Microsoft Excel Sheets. -->
<dependency>
<groupId>org.Apache.poi</groupId>
<artifactId>poi-contrib</artifactId>
<version>3.5-beta5</version>
</dependency>
<!-- Java Mail API used to send Mails. --> <dependency> <groupId>javax.mail</groupId>
<artifactId>mail</artifactId> <version>1.4.3</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.3.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugin</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration> </plugin>
</plugins>
</project>
私を助けてください。
私のプロジェクト構造は
project
--src/main/Java
--src/main/resources
--src/test/Java
|
--my testng class file with @Test method.
--src/test/resources
|
--testng.xml
--maven dependencies
--jre system library
--src
|
--main
--test
--target
pom.xml
-=>フォルダ名|-=>サブフォルダ名
私のtestng.xmlファイルは...
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite1" verbose="1" >
<test name="samplePage Test" >
<classes>
<class name="TestScripts.SamplePage" >
<methods>
<include name = "SamplePageTest_Execution"/>
</methods>
</class>
</classes>
</test>
<test name="newSamplePage Test" >
<classes>
<class name="TestScripts.NewSamplePage" >
<methods>
<include name = "NewSamplePage_Execution02"/>
</methods>
</class>
</classes>
</test>
</suite>
testng.xmlファイルを介してpom.xmlからSamplePage_Executionメソッドを呼び出したいだけでした。
私のSamplePage_Executionメソッドは
public class sample{
@Test
public static void SamplePageTest_Execution() throws Exception{
String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
boolean testStatus = true;
driver = new FirefoxDriver();
driver.get("http://www.google.com");
WebElement searchField = driver.findElement(By.name("q"));
searchField.sendKeys(new String [] {"Selenium2.0"});
searchField.submit();
driver.close();
}}
Pom.xml内の次のコードはうまく機能しています。
<profiles>
<profile>
<id>Selenium-tests</id>
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
次のコマンドを使用してテストを実行します。
mvn clean test -U -Pselenium-tests
または、
mvn clean test
コマンドラインから直接testng.xmlを呼び出すMavenテストを実行できます。
mvn test -Dsurefire.suiteXmlFiles=src/test/resources/testng.xml
SuiteXmlFileをクラスからファイルに変更する必要があります。たとえば、src/test/resourcesにあるtestng.xmlファイルを変更します。さらに、surefire-plugin(現在のバージョン2.12)を更新します。もう1つは、Seleniumテストは通常、統合テストであり、単体テストではないことです。
Updatejunit依存関係の代わりにtestng依存関係を追加する必要があります。したがって、junit依存関係を削除し、 maven-surefire-plugin のドキュメントに従ってtestng依存関係を追加します。
src/test/resources/testng.xmlの代わりに直接testng.xmlを与えることができます
私のPOM.xmlは正常に動作しています。これをPOM.xmlに置き換えます。 Mavenを更新して、もう一度実行してください。幸運を祈ります:)
<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>Automation</groupId>
<artifactId>Automation</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</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.1</version>
<configuration>
<forkCount>0</forkCount>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.seleniumhq.Selenium</groupId>
<artifactId>Selenium-Java</artifactId>
<version>2.46.0</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.5.0-b01</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.6</version>
</dependency>
</dependencies>
</project>
<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.adiltutorials.facebook</groupId>
<artifactId>WebdriverTests</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</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.19.1</version>
<configuration>
<forkCount>0</forkCount>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.seleniumhq.Selenium</groupId>
<artifactId>Selenium-Java</artifactId>
<version>2.52.0</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8</version>
</dependency>
</dependencies>
</project>
ここには基本的な間違いがあると思います。pom.xml = Mavenによって維持されるパッケージ定義
また、testNGテストの定義には、testing.xml(任意のxmlユーザーが定義可能)が使用されます。 xml構成を使用するか、テストを実行するためのカスタム実行設定から独自の構成を作成できますNGそして、xmlファイルで提供される構成(テスト名、リスナークラス名、スイート名またはクラス名) )テストクラスと一致させる必要があります。クラス名= TestScripts.SamplePageをクリアしたように、テストクラス= sampleなので、このxmlはテストクラスを実行しません。小さな例:<class name="com.automation.test.TestA" />
テスト用のxmlにあり、テスト用のクラスはTestAになります。