आप JUnit श्रेणियों और मावेन का उपयोग करके उन्हें बहुत आसानी से विभाजित कर सकते हैं।
यह विभाजन इकाई और एकीकरण परीक्षणों द्वारा बहुत संक्षिप्त रूप से नीचे दिखाया गया है।
एक मार्कर इंटरफ़ेस परिभाषित करें
श्रेणियों का उपयोग करके परीक्षण का समूह बनाने में पहला कदम एक मार्कर इंटरफ़ेस बनाना है।
इस इंटरफ़ेस का उपयोग उन सभी परीक्षणों को चिह्नित करने के लिए किया जाएगा जिन्हें आप एकीकरण परीक्षणों के रूप में चलाना चाहते हैं।
public interface IntegrationTest {}
अपनी परीक्षा कक्षाएं चिह्नित करें
अपनी श्रेणी के शीर्ष पर श्रेणी एनोटेशन जोड़ें। यह आपके नए इंटरफ़ेस का नाम लेता है।
import org.junit.experimental.categories.Category;
@Category(IntegrationTest.class)
public class ExampleIntegrationTest{
@Test
public void longRunningServiceTest() throws Exception {
}
}
मावेन यूनिट टेस्ट कॉन्फ़िगर करें
इस समाधान की सुंदरता यह है कि चीजों के यूनिट परीक्षण पक्ष के लिए वास्तव में कुछ भी नहीं बदलता है।
हम किसी भी एकीकरण परीक्षण की अनदेखी करने के लिए इसे बनाने के लिए मावेन अचूक प्लगइन में कुछ विन्यास जोड़ते हैं।
<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</version>
</dependency>
</dependencies>
<configuration>
<includes>
<include>**/*.class</include>
</includes>
<excludedGroups>com.test.annotation.type.IntegrationTest</excludedGroups>
</configuration>
</plugin>
जब आप एक mvan क्लीन टेस्ट करते हैं तो केवल आपकी अनकवर्ड यूनिट टेस्ट ही चलेगी।
मावेन एकीकरण टेस्ट कॉन्फ़िगर करें
फिर इसके लिए विन्यास बहुत सरल है।
केवल एकीकरण परीक्षण चलाने के लिए, इसका उपयोग करें:
<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</version>
</dependency>
</dependencies>
<configuration>
<groups>com.test.annotation.type.IntegrationTest</groups>
</configuration>
</plugin>
यदि आप इसे आईडी के साथ एक प्रोफ़ाइल में लपेटते हैं IT
, तो आप केवल तेज़ परीक्षणों का उपयोग करके चला सकते हैं mvn clean install
। केवल एकीकरण / धीमी परीक्षणों को चलाने के लिए, उपयोग करें mvn clean install -P IT
।
लेकिन सबसे अधिक बार, आप डिफ़ॉल्ट रूप से और सभी परीक्षणों के साथ तेज परीक्षण चलाना चाहेंगे -P IT
। अगर ऐसा है, तो आपको एक ट्रिक का उपयोग करना होगा:
<profiles>
<profile>
<id>IT</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludedGroups>java.io.Serializable</excludedGroups> <!-- An empty element doesn't overwrite, so I'm using an interface here which no one will ever use -->
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
जैसा कि आप देख सकते हैं, मैं उन परीक्षणों को छोड़ रहा हूं, जिनके साथ एनोटेट किया गया है java.io.Serializable
। यह आवश्यक है क्योंकि प्रोफ़ाइल अचूक प्लगइन के डिफ़ॉल्ट कॉन्फ़िगरेशन को इनहेरिट करेगा, इसलिए भले ही आप कहें <excludedGroups/>
या <excludedGroups></excludedGroups>
, मान com.test.annotation.type.IntegrationTest
का उपयोग किया जाएगा।
आप भी इसका उपयोग नहीं कर सकते none
क्योंकि यह क्लासपाथ पर एक इंटरफ़ेस होना चाहिए (मैवेन यह जांच करेगा)।
टिप्पणियाँ:
- निर्भरता
surefire-junit47
केवल तब आवश्यक है जब मावेन जेयूनेट 4 धावक पर स्वचालित रूप से स्विच नहीं करता है। groups
या excludedGroups
तत्व का उपयोग करके स्विच को ट्रिगर करना चाहिए। यहाँ देखें ।
- ऊपर दिए गए अधिकांश कोड Maven Failsafe प्लगइन के लिए प्रलेखन से लिए गए थे। इस पृष्ठ पर "JUnit श्रेणियाँ का उपयोग करना" अनुभाग देखें ।
- अपने परीक्षणों के दौरान, मैंने पाया कि यह तब भी काम करता है जब आप
@RunWith()
सूट या स्प्रिंग-आधारित परीक्षण चलाने के लिए एनोटेशन का उपयोग करते हैं ।