2011-09-27 14 views
6

परीक्षण यहाँ स्थिति है:JUnit दौरान AspectJ की उपेक्षा कर

  1. हम यह करने के लिए परिभाषित पहलू के साथ वर्ग है MethodA है;
  2. हमारे पास इस विधि ए के लिए जुनीट परीक्षण है;

जब मैं जुनीट परीक्षण चलाता हूं तो यह पहलू को भी सक्रिय करता है। यूनिट परीक्षणों के दौरान पहलुओं को नजरअंदाज करने के बारे में कोई विचार?

मैंने अपने पहलुओं के लिए परीक्षण अलग कर दिए हैं और यह ठीक काम करता है। तो मेरे यूनिट टेस्ट में मैं बिना किसी संलग्न पहलुओं के केवल विधि ए का परीक्षण करना चाहता हूं।

मैं वसंत 3.0 और इसके पहलू समर्थन का उपयोग करता हूं।

अग्रिम धन्यवाद।

सादर, मैक्स

+2

क्या आपके परीक्षण परिदृश्य में इन विशेष परीक्षणों के लिए एक अलग अनुप्रयोग कॉन्टेक्स्ट का उपयोग करना संभव है, ताकि आप इस संदर्भ से AspectJ समर्थन पर टिप्पणी कर सकें? –

+0

धन्यवाद व्लादिमीर, मेरे पास मेरे पहलू आईटी परीक्षण के लिए पहलू-यह-कॉन्फ़िगर है, लेकिन मैं बुनाई बंद करने के लिए जुनीट परीक्षण के लिए एक और संस्करण नहीं बनाना चाहता हूं। मैं एस्पेन से समाधान का प्रयास करूंगा और देख सकता हूं कि यह कैसा चल रहा है। – maxx

उत्तर

4

आप संकलन समय बुनाई है कि मैं अपने आईडीई कर रहा है मान अक्षम करने और अपने अलग AspectJ परीक्षणों में बुनाई का उपयोग लोड समय कर सकते हैं।

लोड-टाइम बुनाई को सक्षम करने के लिए आपको एक Javaagent को JVM पैरामीटर के रूप में प्रदान करना होगा।

एक उदाहरण:

-javaagent:lib/spring-dependencies/spring-agent.jar 

अन्य परिवर्तनों आप लोड समय के लिए बुनाई

तुम भी META-INF में एक aop.xml फ़ाइल फ़ोल्डर पर प्रदान करनी चाहिए संकलन समय से स्थानांतरित जब झुकाव मेरी ट्रेस उदाहरण के लिए, यह इस तरह दिखता है:

<!DOCTYPE aspectj PUBLIC 
     "-//AspectJ//DTD//EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd"> 
<aspectj> 
    <weaver> 
     <!-- only weave classes in this package --> 
     <include within="aspects.trace.demo.*" /> 
    </weaver> 
    <aspects> 
     <!-- use only this aspect for weaving --> 
     <aspect name="aspects.trace.TraceAspect" /> 
    </aspects> 
</aspectj> 

इस विन्यास आप देख सकते हैं कि TraceAspect वर्ग डेमो पैकेज में सभी वर्गों के साथ बुने किया जाएगा। लोड समय बुनाई

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context   
     http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

    <bean id="traceAspect" class="aspects.trace.TraceAspect" 
     factory-method="aspectOf"/> 

    <context:load-time-weaver /> 
</beans> 

विन्यास फाइल के साथ

स्प्रिंग विन्यास लगभग संकलन समय विन्यास फाइल के रूप में ही है, सिवाय इसके कि यह भी एक लोड समय बुनकर तत्व शामिल है।

मुझे आशा है कि इससे मदद मिलती है!

+0

धन्यवाद एस्पेन, आज इसे – maxx

+0

दे देंगे, बस इसके बारे में सोचा और यह सुनिश्चित नहीं है कि यह काम करता है या नहीं। बुनाई के लिए कक्षा ए और AspectForClassA वही है। जब मैं पहलू को चलाता हूं तो मुझे बुनाई के साथ-साथ एप्लिकेशन चलाने के लिए भी आवश्यकता होती है। जब मैं जुनीट चलाता हूं तो मैं नहीं करता हूं। तो मैं कॉन्फ़िगरेशन में कैसे निर्दिष्ट कर सकता हूं कि बुनाई को अनदेखा किया जाना चाहिए, लेकिन केवल जुनीट परीक्षणों के लिए – maxx

+0

आपको अपने कोड को दोबारा बदलना चाहिए और पहलू तर्क को एक अलग वर्ग में रखना चाहिए। मेरे सुझाव के साथ आप डिफ़ॉल्ट रूप से कोई बुनाई नहीं होगा। जब भी आपको इसकी आवश्यकता हो, आपको जावामैंट को JVM तर्क के रूप में प्रदान करना होगा। यदि आपके पास एक्सीप्सेज एजेडीटी प्लगइन की तरह स्वचालित संकलन-समय बुनाई है, तो आपको अपनी परियोजना पर पहले AspectJ प्रकृति को अक्षम करना होगा। – Espen