2011-09-27 12 views
6

testleri:durumdur İşte

  1. Biz ona tanımlanan yönü ile sınıf var Yöntemia var;
  2. Bu yöntem için JUnit testimiz varA;

JUnit testini çalıştırdığımda, Aspect'i de etkinleştirir. Ünite testleri sırasında Unsurları görmezden gelmek için herhangi bir düşünce?

Yönlerim için sınamaları ayırdım ve iyi çalışıyor. Bu yüzden birim testimde ilişik olmayan herhangi bir yönü olmayan sadece metodA'yı test etmek istiyorum.

Yay 3.0 ve en boyj desteğini kullanıyorum.

Şimdiden teşekkürler.

Selamlar, Max

+2

Test senaryounuzda, bu özel testler için ayrı bir applicationContext kullanmak mümkün mü, bu bağlamda AspectJ desteğini yorumlayabiliyorsunuz? –

+0

Teşekkürler Vladimir, Aspect IT testimin yönü-it-config'ım var, fakat JUnit testi için sadece dokumayı açmak için başka bir versiyon oluşturmak istemiyorum. Espen'in çözümünü deneyeceğim ve nasıl gittiğini göreceğim. – maxx

cevap

4

Ben senin IDE yapıyor varsayalım derleme zamanı dokumayı devre dışı bırakmak ve ayrılmış AspectJ'yi testlerinde dokuma yük zamanı kullanabilirsiniz.

Yükleme süresi dokumasını etkinleştirmek için bir javaagent'i bir JVM parametresi olarak sağlamanız gerekir.

Bir örnek:

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

Diğer değişiklikler yüklemek anına dokuma Ayrıca klasörde üzerinde META-INF bir aop.xml dosyasını sağlaması gerekir

derleme zamanında hareket claspath. Benim iz Örneğin , bu şuna benzer:

<!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> 

Eğer TraceAspect sınıf demo paketindeki tüm sınıfları ile dokunan olacağını görebilirsiniz Bu yapılandırmada. aynı zamanda, bir yük-zaman dokumacı elemanı içerir dışında yükleme zamanı dokuma

<?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> 

konfigürasyon dosyası ile

Yay konfigürasyonu hemen hemen derleme yapılandırma dosyası ile aynıdır.

Umarım bu yardımcı olur!

+0

Teşekkürler Espen, bugün bir işe yarayacak – maxx

+0

Sadece düşündüm ve çalışıp çalışmadığından emin değilsiniz. Dokuma için classA ve AspectForClassA aynıdır. Aspect IT'yi çalıştırdığımda, uygulama çalışması için olduğu kadar dokumaya da ihtiyacım var. JUnit'i çalıştırdığımda, yapmam. Bu yüzden, dokumanın göz ardı edilmesi gereken, ancak sadece JUnit testleri için – maxx

+0

kodunu nasıl belirleyebileceğimi nasıl belirleyebilirim? Kodunuzu yeniden düzenlemeli ve ayrı bir sınıfta görünüm mantığına sahip olmalısınız. Yukarıdaki önerimle, varsayılan olarak hiçbir dokumaya sahip olmayacaksınız. İhtiyacınız olduğunda javaagent'i bir JVM argümanı olarak vermelisiniz. Eclipse AJDT eklentisi gibi otomatik derleme zamanı dokuma uygulamanız varsa, projenizdeki AspectJ niteliğini ilk önce devre dışı bırakmanız gerekir. – Espen