Игнорирование Aspectj во время джунтовых тестов - PullRequest
6 голосов
/ 27 сентября 2011

Вот ситуация:

  1. У нас есть класс с определенным аспектом для его methodA;
  2. У нас есть тест JUnit для этого методаA;

Когда я запускаю тест JUnit, он также активирует Aspect. Есть мысли, как игнорировать аспекты во время юнит-тестов?

Я разделил тесты для моих Аспектов, и он работает нормально. Поэтому в моем модульном тесте я хочу протестировать только метод A без каких-либо дополнительных аспектов.

Я использую Spring 3.0 и его поддержку aspectj.

Заранее спасибо.

С уважением, Max

1 Ответ

4 голосов
/ 27 сентября 2011

Вы можете отключить ткачество во время компиляции, которое, как я полагаю, делает твоя IDE, и использовать ткачество во время загрузки в отдельных тестах AspectJ.

Чтобы включить ткачество во время загрузки, необходимо указать javaagent в качестве параметра JVM.

Пример:

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

Другие изменения при переходе от ткачества во время компиляции ко времени загрузки

Вы также должны предоставить файл aop.xml в папке META-INF на claspath. Для моего примера трассировки это выглядит так:

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

Файл конфигурации почти такой же, как файл конфигурации во время компиляции, за исключением того, что он также содержит элемент Weaver во время загрузки.

Надеюсь, это поможет!

...