मेरे पास परीक्षणों का एक सेट है जिसे निष्पादित करने के लिए डेटाबेस की आवश्यकता होती है। मैं उनके निष्पादन की शुरुआत में डेटाबेस बनाना चाहता हूं और अंत में इसे हटा देना चाहता हूं।
मैवेन से मैंने मेवेन-सिक्योरफायर-प्लगइन में रनलिस्टर भी जोड़ा है और यह ठीक काम करता है। और मैंने ismaven नामक सिस्टम प्रॉपर्टी वैरिएबल भी जोड़ा है। जब मैं मेवेन से परीक्षण निष्पादित करता हूं तो यह चर प्रारंभ होता है लेकिन जब मैं ग्रहण से परीक्षण निष्पादित करता हूं, तो यह चर शून्य है (मैं सिस्टम.getप्रोपर्टी के साथ चर के लिए उपयोग करता हूं)।
<configuration>
<properties>
<property>
<name>listener</name>
<value>com.mycompany.MyRunListener</value>
</property>
</properties>
<systemPropertyVariables>
<ismaven>true</ismaven>
</systemPropertyVariables>
</configuration>
मेरे सभी डेटाबेस परीक्षण एक वर्ग है कि एक @BeforeClass और एक @AfterClass तरीकों है से विरासत। ये विधियां जांचें कि क्या मेवेन द्वारा परीक्षण किया जा रहा है या ग्रहण ismaven संपत्ति के मूल्य की जांच कर रहा है। यदि परीक्षण मेवेन द्वारा निष्पादित किया जा रहा है, ismaven संपत्ति का मूल्य है और वे कुछ भी करते हैं। लेकिन परीक्षण, ग्रहण द्वारा क्रियान्वित की जा रही है है ismaven चर रिक्त है और वे (@BeforeClass) शुरू होता है या बंद हो जाता है (@AfterClass) डेटाबेस:
@BeforeClass
public static void checkIfStartDatabase() {
String ismaven = System.getProperty("ismaven");
// If it is not maven, start the database
if (ismaven == null) {
startDatabase();
}
}
@AfterClass
public static void checkIfStopDatabase() {
String ismaven = System.getProperty("ismaven");
// If it is not maven, stop the database
if (ismaven == null) {
stopDatabase();
}
}
यह समाधान 100% का समाधान नहीं करता अपने समस्या लेकिन यदि आप इसे कार्यान्वित करते हैं तो आप एक्लिप्स का उपयोग करके एक जुनीट कक्षा के सभी परीक्षणों को निष्पादित (और डीबग) कर सकते हैं और आप गारंटी के साथ मेवेन का उपयोग करके अपने प्रोजेक्ट के सभी परीक्षणों को निष्पादित कर सकते हैं कि आप कोड के एक टुकड़े को एक बार निष्पादित करेंगे या अपने सभी परीक्षणों के निष्पादन के बाद।
स्रोत
2014-10-03 08:20:10
यह वही नहीं है जो मैंने देखा था, क्योंकि मैं लॉगिंग के लिए परीक्षण कार्यान्वयन की जटिलता में वृद्धि नहीं करना चाहता हूं। मैं परीक्षणों के बाहर लॉगिंग जोड़ना चाहता था, लेकिन समाधान अभी तक सबसे अच्छा है और अंत में परिणाम वांछित है। मैं इस जवाब को समाधान के रूप में चिह्नित करता हूं। –