2012-05-10 3 views
8

Я использую Selenium WebDriver, Eclipse, TestNG и Surefire. Я не могу запустить файл testng.xml из pom.xml. Пока я запускаю pom.xml, используя mvn test, он напрямую запускает файл, который находится в файле src/test/java.Как вызвать файл testng.xml из pom.xml в Maven

мой 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> 

Я просто хотел вызвать метод SamplePage_Execution из pom.xml через файл testng.xml.

Мой метод 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(); 
}} 
+0

Мой следующий код не работает: <конфигурация> testng.xml Код ниже работал нормально: <конфигурация> **/* ST.java Примечание: Мой селен имя Java-код: Selenium2ExampleST.java –

ответ

2

Вы должны изменить suiteXmlFile из класса в файл, а не, например, testng.xml файл, который находится в SRC/тест/ресурсов. Кроме того, обновите верный плагин (текущая версия 2.12). Другое дело, что тесты селена обычно являются интеграционными тестами, а не модульными испытаниями.

Обновление Вы должны добавить зависимость testng вместо junit-зависимости. Поэтому удалите зависимость junit и добавьте зависимость testng в соответствии с документацией maven-surefire-plugin.

+0

я изменил оба вещи, но я не получил решение , пожалуйста, объясните это более подробно. – Manigandan

+0

Что это значит? Вы получили сообщение об ошибке? Вы обновили maven-surefire-plugin до 2.12? Где находится файл testng.xml? – khmarbaise

+0

Нет, я не получил никаких сообщений об ошибке msg.Actually, у меня есть класс testng в каталоге «src/test/java». как я упоминал ранее, когда я запускаю файл pom.xml, он непосредственно выполняет файл класса testng, и он работает нормально. но я хочу запустить этот файл класса testng с помощью файла testng.xml, и файл testng.xml должен вызвать через pom.xml. И я обновил maven-surfire-plugin до 2.12. – Manigandan

8

Мой следующий код в 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 
+0

Добавление конфигурации SuiteXmlFile под конфигурацию работало для меня. Благодарю. – newuser

+0

Большое спасибо, newuser –

0

Я думаю, что есть это основные ошибки здесь. pom.xml = определение пакета, которое поддерживается ed by Maven

и testing.xml (любой пользователь xml может определить) используется для определения теста TestNG. Либо вы используете xml-конфигурацию, вы можете сделать собственную конфигурацию из пользовательских параметров запуска для запуска теста NG И ваша предоставленная конфигурация в XML-файле (имя теста, имя класса слушателя, имя пакета или имя класса) должна соответствовать вашему тестовому классу , Подобно тому, как вы разделили имя класса = TestScripts.SamplePage, но ваш тестовый класс = пример, так что этот xml никогда не будет запускать ваш тестовый класс. Небольшой пример: <class name="com.automation.test.TestA" /> Он находится в моем тестовом xml, и мой тестовый класс будет TestA.

0

вы можете дать прямой testng.xml вместо SRC/тест/ресурсы/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> 
0
<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> 
+0

Это решит его –

2

Вы можете запустить Maven тест вызывающую testng.xml из командной строки непосредственно через

mvn test -Dsurefire.suiteXmlFiles=src/test/resources/testng.xml 
+0

простое и простое решение –

Смежные вопросы