2015-07-02 8 views
9

के साथ सीडीआई परीक्षण 3 दिन पहले मैंने आर्किलीयन "प्रारंभ करना" मार्गदर्शिका पूरी की और निर्णय लिया कि सीक्यूआरएस सिस्टम के मेरे हिस्से के यूनिट परीक्षण के लिए उपयोग करना एक अच्छी बात होगी।आर्किलीयन

दुर्भाग्यवश यह सीधे आगे की तुलना में थोड़ा कम साबित हुआ है। मैंने पिछले 3 दिनों से गुमराह किया है और इस मुद्दे को किसी भी समाधान द्वारा हल नहीं किया गया है जो दूसरों के लिए काम करता है।

मैं इस निष्कर्ष पर आ रहा हूं कि समस्या मेरे कोड के साथ है हालांकि मैं नहीं देखता हूं।

मेरा कार्य एक ईवेंट श्रोता लिखना है जो घटनाओं के लिए ActiveMQ विषय को सुनता है और फिर एक मोंगो डीबी में "दृश्य" अपडेट करता है।

सिस्टम में कई घटनाएं होंगी, इसलिए मुझे एक सार आधार वर्ग बनाने के लिए उचित लग रहा था कि सभी घटना श्रोताओं का विस्तार होता है।

इस बेस क्लास में मोंगो क्लाइंट और रजिस्ट्रार हैं जो इस विषय को सुनने के लिए हैं। यह श्रोता नाम के लिए एक अधिक भारित गेटर का उपयोग करता है जो इसे ऊंट मार्ग में बीन संदर्भ के रूप में उपयोग करता है। श्रोता ग्राहक आईडी एक स्थिर लंबे समय से उत्पन्न होती है जो प्रत्येक श्रोता पंजीकरण पर बढ़ी है। यह सुनिश्चित करता है कि प्रत्येक श्रोता को विषय पर पोस्ट की गई हर घटना को देखने के लिए मिलता है। इरादे बाद में प्राप्त घटना की संख्या को कम करने के लिए एक फ़िल्टर जोड़ना है।

मैंने इस कोड को बनाया है और इसे टाइमर जनरेटिंग ईवेंट विषय पोस्ट से संचालित किया है और यह सब ठीक काम करता है।

उस समस्या के साथ यूनिट परीक्षणों द्वारा कोबर्टुरा रिपोर्ट 80% कोड कवरेज की गुणवत्ता आवश्यकता है।

मेरा परीक्षण आवेदन यूनिट परीक्षण नहीं है इसलिए मेरा कोड कवरेज 0% है।

मैं सीडीआई में यूनिट परीक्षण के कुछ अन्य तरीकों के माध्यम से आर्किलियन आया हूं लेकिन अगर मैं इसे केवल काम पर ला सकता हूं तो आर्किलीयन सबसे अच्छा विकल्प प्रतीत होता है।

त्रुटि मैं हो रही है:

java.lang.IllegalStateException: Could not find beans for Type=class org.apache.deltaspike.core.impl.scope.window.WindowBeanHolder and qualifiers:[] 

मैं पोम में deltaspike को शामिल किया है, मैं इसे shrinkwrap तैनाती

पोम निकालने

<dependency> 
    <groupId>org.apache.deltaspike.core</groupId> 
    <artifactId>deltaspike-core-api</artifactId> 
    <version>${deltaspike.version}</version> 
</dependency> 

<dependency> 
    <groupId>org.apache.deltaspike.core</groupId> 
    <artifactId>deltaspike-core-impl</artifactId> 
    <version>${deltaspike.version}</version> 
</dependency> 

<dependency> 
    <groupId>org.jboss.shrinkwrap.resolver</groupId> 
    <artifactId>shrinkwrap-resolver-impl-maven</artifactId> 
    <version>2.0.0</version> 
</dependency> 

टेस्ट वर्ग में शामिल किया है @RunWith (Arquillian.class) पब्लिक क्लास श्रोता टेस्ट {

AbstractEventListener listener = null ; 
    WindowBeanHolder w = new WindowBeanHolder(); 

    @Deployment 
    public static WebArchive createDeployment() { 
     return ShrinkWrap.create(WebArchive.class).addAsLibraries(Maven.resolver().loadPomFromFile("pom.xml") 
     .resolve("org.apache.deltaspike.core:deltaspike-core-api", 
       "org.apache.deltaspike.core:deltaspike-core-impl") 
     .withoutTransitivity().asFile()) 
     .addAsWebInfResource("beans.xml"); 
} 


    @Test 
    public void testExecute() { 
     Assert.assertNotNull(listener); 
    } 
} 

मेरे beams.xml

<?xml version="1.0" encoding="UTF-8"?> 
    <beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd" 
    bean-discovery-mode="all"> 
</beans> 

आप देख सकते हैं मैं भी कोड को WindowBeanHolder जोड़ने की कोशिश की है।

मैंने पिछले कुछ दिनों में कोड में कई बदलाव किए हैं। मैंने पूर्ण पोम इत्यादि शामिल नहीं किया है क्योंकि इसकी आवश्यकता नहीं हो सकती है लेकिन यदि आवश्यक हो तो जोड़ सकते हैं।

यदि आपके पास कोई सुझाव है कि मैं कहां से यहां जा सकता हूं तो बहुत से धन्यवाद।

+0

डेल्टास्पीक स्वयं आर्क्विलियन के माध्यम से परीक्षण किया जाता है। मैं उनके सेटअप की जांच करूंगा। –

उत्तर

0

एक इंटरफेस के माध्यम से डेटाबेस परत सार। प्रोड के लिए एक मोंगो इम्प्लाइंड प्रदान करें, लेकिन परीक्षण के लिए एक यूनिट-टेस्टेबल स्टेटफुल "डमी" इम्प्लायर प्रदान करें।

क्या आपका सभी कोड इंटरफ़ेस को संदर्भित करता है और यदि आवश्यक हो तो प्रतिबिंब का उपयोग करके) अपने यूनिट परीक्षण चलाने से पहले अपने कोड का परीक्षण करने के लिए डमी इम्प्लाइज़ करें।

संबंधित मुद्दे