كيفية تنفيذ JUnit و TestNG الاختبارات في نفس المشروع باستخدام مخضرم-مؤكدة-البرنامج المساعد ؟

StackOverflow https://stackoverflow.com/questions/1232853

سؤال

الآن لدي كل نوع من الاختبارات ولكن عندما أقول "mvn اختبار" انه فقط ينفذ TestNG اختبارات و لا Junit.أريد أن تنفيذ كل واحدة بعد أخرى.أي فكرة ؟

هل كانت مفيدة؟

المحلول

وهناك مثل قضية مفتوحة لثي و لذلك ليس هناك طريقة أنيقة للقيام هذا.

وسيكون أبسط بكثير بالنسبة لك لاختيار الإطار والعصا معه.

وتحرير: لا تعمل جوابي السابقة لأنه لا يمكن تحديد تبعيات في التنفيذ. لقد حاولت بعض النهج، ولكن أفضل ما يمكن أن إدارة هو خلق صورة للتبعية TestNG حتى تتمكن من تبديل بين TestNG واختبار أداة JUnit، لا يبدو أن يكون وسيلة لتشغيل كل TestNG وأداة JUnit 4 اختبارات .

وثمة نقطة أخرى لملاحظة: يمكنك إطلاق JUnit الاختبارات الخاصة بك من TestNG ، ولكن أعتقد أن هذا يعمل فقط لأداة JUnit 3 اختبارات.

نصائح أخرى

الطريقة الرسمية مع اختيار مقدمي.

يمكنك أيضا تحديد عدة مقدمي تبعيات و سيتم تشغيل و إعداد تقرير موحد.قد يكون هذا مفيد خاصة مع جهات خارجية ، لأن هناك عدد قليل من حالات الاستخدام الجمع بين شملت مقدمي الخدمات.

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

مزيد من المعلومات حول هذا: خلط TestNG و JUnit في أحد الاختبارات مخضرم الوحدة النمطية إصدار 2013

الارتباط الحالي لهذا في مخضرم-مؤكدة-المساعد أمثلة.البحث عن "تشغيل TestNG و JUnit الاختبارات".

سوف تحتاج إلى تكوين testng مزود تجاهل junit الاختبارات مثل:

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

ولدي <لأ href = "http://confluence.highsource.org/display/~lexi/How+to+run+both+JUnit+and+TestNG+with+maven-surefire-plugin" يختلط = "noreferrer"> أفضل حل .

والفكرة هي إنشاء عمليتي إعدام لmaven-surefire-plugin، واحدة للأداة JUnit، واحدة للTestNG. يمكنك تعطيل أحد TestNG أو أداة JUnit في التنفيذ لتحديد junitArtifactName انعدم تماما أو testNGArtifactName:

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

وهناك wayout آخر لهذا الغرض. يمكن أن تسأل TestNG لتشغيل حالات الاختبار أداة JUnit كذلك. وفيما يلي عينة testng.xml لتشغيل جميع حالات الاختبار

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

وبفضل هذا الرابط ( http://jira.codehaus.org/browse/SUREFIRE-377 ) ، وهنا هو الحل لمشكلتي السابقة (بعد 3 الإعدام بدلا من 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>

لأداة 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>

وكذلك استخدام التبعية TestNG عند الحاجة

ولقد وجدت أن الحل هو إجبار المساعد متأكد النار لاستخدام أداة JUnit. فعلت ذلك عن طريق تجاوز المساعد مؤكدة النجاح في مشروع معين على النحو التالي. قوات التبعية مؤكدة النجاح لاستخدام أداة JUnit.

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

وبناء على الحلول السابقة. لقد وجدت هذا عمل أفضل بالنسبة لنا. وكانت قضية واحدة المزيد كنا نواجه TestNG محاولة تشغيل JUnit الاختبارات القديمة. يمكننا تجنب هذا عن طريق تسمية جميع الاختبارات TestNG بشكل مختلف (على سبيل المثال * TestNG.java). وفيما يلي التكوين مع اثنين من إعدام مؤكدة النجاح بين البرنامج المساعد.

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

ولقد وجدت الحل لتشغيل كل أنواع الاختبار مع TestNG دون تغيير التكوين بناء أداة الخاص بك.

واختبرت مع Gradle ولكن يجب أن تعمل مع مخضرم جدا.

لاحظ أن هذا سيتم تشغيل JUnit الاختبارات داخل TestNG، ولكن ليس في الاتجاه الآخر إلى الخلف.

وهو خدعة لاستخدام شروح كل من الأطر 'في الطبقات اختبار واستخدام TestNG يؤكد من أجل التوافق أداة JUnit.

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);
    }
}
<ع> استخدام هذا الإختراق، يمكنك بسهولة تشغيل JUnit الاختبارات الحالية مع TestNG، مما يساعدك على ترحيلها عندما يسمح الوقت.

ونأمل أن يساعد!

ولأداة 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>

وإذا كنت مجرد تحديد مزود testng، فستعمل على حد سواء JUnit الاختبارات والاختبارات testng كل مرة واحدة فقط.
حتى لا يكون هناك أي قيود على تسمية الاختبارات.

والإصدارات المساعد:
مؤكدة النجاح البرنامج المساعد 2.16 (junit47 وtestng مقدمي كلا نسخة المقرر أن 2.16)
testng الاعتماد 6.8.7
أداة JUnit التبعية 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>
<اقتباس فقرة>   

وثان تشغيل فقط: اختبار mvn -Pjunit اختبارات (لتشغيل الاختبار على أساس أداة JUnit) أو اختبار mvn اختبارات -PtestNG (لاختبار TestNG القائم)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top