java - मेवेन में श्रेणी के द्वारा जुनीट परीक्षण कैसे चलाएं?




maven junit (4)

आप उपयोग कर सकते हैं

mvn test -Dgroups="com.myapp.FastTests, com.myapp.SlowTests"

लेकिन सुनिश्चित करें कि आप ठीक से maven surefire प्लगइन को कॉन्फ़िगर करें

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

इसमें दस्तावेज़ देखें: https://maven.apache.org/surefire/maven-surefire-plugin/examples/junit.html

जुनीट 4.8 और नई @ श्रेणी एनोटेशन का उपयोग करना, मेवेन की सरेफायर प्लगइन के साथ चलाने के लिए श्रेणियों का सबसेट चुनने का कोई तरीका है?

उदाहरण के लिए मेरे पास है:

@Test
public void a() {
}

@Category(SlowTests.class)
@Test
public void b() {
}

और मैं सभी गैर धीमी परीक्षणों को इस तरह से चलाने के लिए चाहता हूं: (ध्यान दें कि -Dtest.categories मेरे द्वारा बनाई गई थी ...)।

mvn test -Dtest.categories=!SlowTests // run non-slow tests
mvn test -Dtest.categories=SlowTests // run only slow tests
mvn test -Dtest.categories=SlowTests,FastTests // run only slow tests and fast tests
mvn test // run all tests, including non-categorized

तो मुद्दा यह है कि मैं टेस्ट सूट बनाना नहीं चाहता (मैवेन सिर्फ परियोजना में सभी यूनिट परीक्षणों को उठाता है जो बहुत सुविधाजनक है) और मैं चाहता हूं कि मैवेन श्रेणी के अनुसार परीक्षण चुन सकें। मुझे लगता है कि मैंने अभी -Dtest.categories बनाये हैं, इसलिए मैं सोच रहा था कि क्या ऐसी कोई सुविधा है जिसका उपयोग मैं कर सकता हूं?


इस ब्लॉग पोस्ट के आधार पर - और सरलीकृत करना - इसे अपने pom.xml में जोड़ें:

<profiles>
    <profile>
        <id>SlowTests</id>
        <properties>
            <testcase.groups>com.example.SlowTests</testcase.groups>
        </properties>
    </profile>
    <profile>
        <id>FastTests</id>
        <properties>
            <testcase.groups>com.example.FastTests</testcase.groups>
        </properties>
    </profile>
</profiles>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.13</version>
            <dependencies>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit47</artifactId>
                    <version>2.13</version>
                </dependency>
            </dependencies>
            <configuration>
                <groups>${testcase.groups}</groups>
            </configuration>
        </plugin>
    </plugins>
</build>

फिर कमांड लाइन पर

mvn install -P SlowTests
mvn install -P FastTests
mvn install -P FastTests,SlowTests

मेरे पास एक समान मामला था जहां मैं किसी दिए गए श्रेणी के अलावा सभी परीक्षणों को चलाने के लिए चाहता हूं (उदाहरण के लिए, क्योंकि मेरे पास सैकड़ों विरासत अनगिनत परीक्षण हैं, और मैं उनमें से प्रत्येक को संशोधित नहीं करना चाहता / सकती हूं)

मेवेन surefire प्लगइन उदाहरण के लिए श्रेणियों को बाहर करने की अनुमति देता है:

<profiles>
    <profile>
        <id>NonSlowTests</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <excludedGroups>my.category.SlowTest</excludedGroups>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

मेवेन को तब से अद्यतन किया गया है और श्रेणियों का उपयोग कर सकते हैं।

Surefire दस्तावेज़ीकरण से एक उदाहरण :

<plugin>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.11</version>
      <configuration>
        <groups>com.mycompany.SlowTests</groups>
      </configuration>
</plugin>

यह एनोटेशन @Category(com.mycompany.SlowTests.class) श्रेणी @Category(com.mycompany.SlowTests.class) साथ किसी भी कक्षा को @Category(com.mycompany.SlowTests.class)







maven-surefire-plugin