Frage

Im Moment habe ich beiden Arten von Tests, aber wenn ich sage „mvn test“ es führt nur TestNG Tests und nicht Junit. Ich möchte beide nacheinander auszuführen. Jede Idee?

War es hilfreich?

Lösung

Es gibt eine offene Frage für thi s, so gibt es keine elegante Art und Weise zu tun, dies.

Es wäre viel einfacher für Sie, einen Rahmen zu wählen, und bleiben Sie dabei.

Edit: Meine bisherige Antwort funktioniert nicht, weil Sie keine Abhängigkeiten in der Ausführung angeben. Ich habe ein paar Ansätze versucht, aber das Beste, was ich verwalten kann, ist ein Profil für die TestNG Abhängigkeit zu erstellen, so dass Sie zwischen TestNG und JUnit-Tests umschalten, scheint es kein Mittel laufen sowohl TestNG und JUnit 4 Tests zu sein .

Ein weiterer Punkt zu beachten: Sie starten rel="noreferrer"> , aber ich denke, das funktioniert nur für JUnit-3-Tests.

Andere Tipps

Official Art und Weise mit Anbieter Auswahl.

  

Sie können auch mehrere Anbieter als Abhängigkeiten angeben, und sie werden alle ausgeführt werden und einen gemeinsamen Bericht erstellen . Dies kann mit externen Anbietern besonders praktisch sein, da es nur wenige Anwendungsfälle sind für die enthaltenen Anbieter kombinieren.

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.18.1</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-junit47</artifactId>
            <version>2.18.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-testng</artifactId>
            <version>2.18.1</version>
        </dependency>
    </dependencies>
</plugin>

Weitere Informationen über diese: TestNG und JUnit-Tests in einer Maven Mischmodul - Ausgabe 2013

Aktuelle Link zu diesem Thema in der Maven-todsichere-Plugin Beispielen . Suche nach " Running TestNG und JUnit-Tests ".

Sie wollen die testng Provider konfigurieren Sie die JUnit-Tests zu ignorieren etwa so:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.18.1</version>
    <configuration>        
    <properties>
        <property>
            <name>junit</name>
            <value>false</value>
         </property>
    </properties>        
    </configuration>
    [...providers as dependecies, see above...]
</plugin>

Ich habe eine bessere Lösung .

Die Idee ist, zwei Ausführungen des maven-surefire-plugin zu erstellen, einen für JUnit, einen für TestNG. Sie können durch die Angabe nonexisting junitArtifactName oder testNGArtifactName pro Ausführung eines von TestNG oder JUnit deaktivieren:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <executions>
        <execution>
            <phase>test</phase>
            <goals>
                <goal>test</goal>
            </goals>
            <configuration> 
                <testNGArtifactName>none:none</testNGArtifactName>
            </configuration>
        </execution>
        <execution>
            <id>test-testng</id>
            <phase>test</phase>
            <goals>
                <goal>test</goal>
            </goals>
            <configuration> 
                <junitArtifactName>none:none</junitArtifactName>
            </configuration>
        </execution>
    </executions>
</plugin>

Es gibt einen weiteren wayout dafür. Sie könnten TestNG fragen Junit Testfälle als auch auszuführen. Im Folgenden finden Sie die Probe testng.xml alle Testfälle

laufen

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
 
<suite name="TestAll">
 
	<test name="junitTestCases" junit="true">
		<packages>
			<package name="com.test.*" />
			
		</packages>
	</test>
 
 <test name="testNGTestCases" >
		<packages>
			<package name="com.test.*" />
			
		</packages>
	</test>
</suite>

Dank diesen Link ( http://jira.codehaus.org/browse/SUREFIRE-377 ) , hier eine Lösung zu meinem vorherigen Problem (mit 3 Hinrichtungen statt 2)

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.10</version>
    <configuration>
       <testNGArtifactName>none:none</testNGArtifactName>
    </configuration>
    <executions>
       <execution>
          <phase>test</phase>
          <goals>
             <goal>test</goal>
          </goals>
          <configuration>
             <junitArtifactName>none:none</junitArtifactName>
             <testNGArtifactName>org.testng:testng</testNGArtifactName>
          </configuration>
       </execution>
    </executions>
</plugin>

Für JUnit ---

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-surefire-plugin</artifactId>
   <version>2.19.1</version>
   <dependencies>
  <dependency>
    <groupId>org.apache.maven.surefire</groupId>
    <artifactId>surefire-junit47</artifactId>
    <version>2.19.1</version>
  </dependency>
</dependencies>

Ebenso die Abhängigkeit für TestNG verwenden, wenn erforderlich

Ich fand, dass die Lösung die todsichere Plugin zu zwingen, war JUnit zu verwenden. Ich tat dies durch zwingende todsichere Plugin in dem jeweiligen Projekt wie folgt. Die Abhängigkeitskräfte todsichere JUnit zu verwenden.

<build>
    <plugins>
        <!-- force sure fire to use junit instead of testng -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.10</version>
            <dependencies>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit47</artifactId>
                    <version>2.10</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

Basierend auf früheren Lösungen. Ich fand das Beste für uns gearbeitet. Ein weiteres Problem, das wir konfrontiert waren war TestNG versuchen, alte JUnit-Tests laufen zu lassen. Wir vermeiden dies, indem alle TestNG Tests Benennung unterschiedlich (z * TestNG.java). Im Folgenden ist die Konfiguration mit zwei Ausführungen von todsichere-Plugin.

    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12.4</version>
            <configuration>           
                <testNGArtifactName>none:none</testNGArtifactName>   
                <excludes>
                    <exclude>**/*TestNG.java</exclude>
                </excludes> 
            </configuration>
            <executions>
                <execution>
                    <id>test-testng</id>
                    <phase>test</phase>
                    <goals>
                        <goal>test</goal>
                    </goals>
                    <configuration> 
                        <junitArtifactName>none:none</junitArtifactName>          
                        <testNGArtifactName>org.testng:testng</testNGArtifactName>   
                        <includes>
                            <include>**/*TestNG.java</include>
                        </includes>
                        <excludes>
                            <exclude>**/*Test.java</exclude>
                        </excludes> 
                    </configuration>
                </execution>
            </executions>
        </plugin>

fand ich eine Lösung aus beiden Testtypen mit TestNG auszuführen, ohne Ihre Build-Tool-Konfiguration zu ändern.

ich mit Gradle getestet, sollte aber mit Maven arbeiten.

Beachten Sie, dass diese JUnit-Tests innerhalb TestNG laufen wird, aber nicht die andere Art und Weise zurück.

Der Trick ist es, beide Frameworks' Anmerkungen in den Testklassen verwenden und TestNG für JUnit Kompatibilität behauptet.

import static org.testng.AssertJUnit.*;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

@org.testng.annotations.Test
public final class ApplicationTest {

    @org.testng.annotations.BeforeClass
    @BeforeClass
    public static void setup () {}

    @org.testng.annotations.AfterClass
    @AfterClass
    public static void cleanup () {}

    @Test public void json () throws IOException {
        assertTrue (true);
    }
}

diesen Hack verwenden, können Sie einfach bestehende JUnit-Tests mit TestNG laufen und hilft Ihnen, sie wandern, wenn die Zeit erlaubt.

Hoffe, es hilft!

für Junit dies mein Problem gelöst

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-surefire-plugin</artifactId>
   <version>2.19.1</version>
   <dependencies>
  <dependency>
    <groupId>org.apache.maven.surefire</groupId>
    <artifactId>surefire-junit47</artifactId>
    <version>2.19.1</version>
  </dependency>
</dependencies>

, wenn Sie nur testng Anbieter angeben, wird es laufen beide JUnit-Tests und Tests testng alle nur einmal.
so gibt es keine Beschränkung der Tests zur Namensgebung.

Plugin-Versionen:
todsichere-Plugin 2,16 (junit47 und testng Anbieter beide Version auf 2.16)
testng Abhängigkeit 6.8.7
junit Abhängigkeit 4.7

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.0</version>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>
        <!-- ********* Skip Test for Success BUILD ******** -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.10</version>
            <configuration>
                <skip>true</skip>
            </configuration>
        </plugin>
        <!-- *********************************************** -->
    </plugins>
</build>

<profiles>
    <!-- ********** Profiles for run test cases ************ -->
    <!-- Profile for run JUnit test dependent tests -->
    <profile>
        <id>junit-tests</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.10</version>
                    <configuration>
                        <skip>false</skip>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.maven.surefire</groupId>
                            <artifactId>surefire-junit47</artifactId>
                            <version>2.10</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </build>
    </profile>

    <!-- Profile for run TestNG dependent tests -->
    <profile>
        <id>testNG-tests</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.10</version>
                    <configuration>
                        <skip>false</skip>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

    <!-- ***************************************************** -->
</profiles>
  

Als nur laufen. Mvn Test -Pjunit-Tests (für Lauftest auf Basis von JUnit) oder mvn Test -PtestNG-Tests (für TestNG Test basiert)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top