it-swarm.dev

So rufen Sie die Datei testng.xml aus pom.xml in Maven auf

Ich benutze Selenium WebDriver, Eclipse, TestNG und Surefire Plugin. Ich kann die Datei testng.xml nicht von pom.xml aus ausführen. Während ich pom.xml mit mvn test ausführte, führe ich direkt die Datei aus, die sich in src/test/Java befindet.

mein pom.xml-Code lautet 

<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>

Bitte hilf mir.

Meine Projektstruktur ist 

 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

- => Ordnernamen | - => Unterordnernamen

Meine testng.xml-Datei ist ...

  <?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>

ich wollte nur die SamplePage_Execution-Methode aus der Datei pom.xml über die Datei testng.xml aufrufen.

Meine SamplePage_Execution-Methode ist 

  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();
}}
10
Manigandan

Mein folgender Code in pom.xml funktioniert gut:

<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>

Führen Sie den Test mit dem folgenden Befehl aus:

mvn clean test -U -Pselenium-tests

ODER,

mvn clean test
11
Ripon Al Wasim

Sie können maven test aufrufen, indem Sie testng.xml direkt über die Befehlszeile aufrufen

mvn test -Dsurefire.suiteXmlFiles=src/test/resources/testng.xml
2
Xiao

Sie sollten suiteXmlFile von einer Klasse in eine Datei umwandeln, zum Beispiel in die Datei testng.xml, die sich in src/test/resources befindet. Aktualisieren Sie außerdem das Surefire-Plugin (aktuelle Version 2.12). Eine andere Sache ist, dass Selentests normalerweise Integrationstests und nicht Komponententests sind.

Update Sie müssen die testng-Abhängigkeit anstelle der junit-Abhängigkeit hinzufügen. Entfernen Sie also die junit-Abhängigkeit und fügen Sie die testng-Abhängigkeit entsprechend der Dokumentation des maven-surefire-plugin hinzu.

2
khmarbaise

sie können direkt testng.xml anstelle von src/test/resources/testng.xml angeben

Mein POM.xml funktioniert einwandfrei. Ersetzen Sie es durch Ihre POM.xml. Aktualisieren Sie Ihren Maven und führen Sie ihn erneut aus. Viel Glück :)

<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
Shubham Jain
<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
ADIL HANNOUNI

Ich denke, es gibt hier grundlegende Fehler. Pom.xml = Paketdefinition, die von Maven verwaltet wird 

und testing.xml (ein beliebiger XML-Benutzer kann definiert werden) wird für die TestNG-Testspezifikation verwendet. Entweder verwenden Sie die XML-Konfiguration. Sie können aus den benutzerdefinierten Laufeinstellungen eine eigene Konfiguration für die Ausführung von Test NG Erstellen. Außerdem können Sie Ihre bereitgestellte Konfiguration in der XML-Datei (Testname, Name der Listener-Klasse, Name der Suite oder) angeben Klassenname) sollte zu Ihrer Testklasse passen. Wie Sie bereits Klassenname = TestScripts.SamplePage deklariert haben, aber Ihre Testklasse = Beispiel, so wird diese XML-Klasse niemals Ihre Testklasse ausführen. Kleines Beispiel: <class name="com.automation.test.TestA" /> befindet sich in meiner Test-XML und meine Testklasse wird TestA sein. 

0
Shantonu