2012-06-22 2 views
0

Вот странный. У меня несколько неудачных тестов, потому что применяется аспект, поэтому автоуслуги имеют нулевое значение, возникают плохие вещи. Проблема в том, что я не могу понять как аспект даже применяется, так как в тесте я строю объект под тестом с новым.Весенний аспект применяется вне контекста приложения (в пробитом модульном тесте)

@RunWith(MockitoJUnitRunner.class) 
public class TheControllerTest { 

    @Spy 
    private TheController controller = new TheController(); 

    @Mock 
    private HttpServletRequest request; 

    @Mock 
    private ConfigService configService; 
    .... 

@Before 
public void setup() { 
    controller.setConfigService(configService); 
.... 
    } 

@Test 
public void testGetAccountsList() throws Exception { 
Mockito.when(accountService.getAllAccounts()).thenReturn(Arrays.asList(account1,  account2)); 

    Map<String, Object> result = controller.getAccountsList(request); 
...  
} 
} 

Я, очевидно, опуская много кода, но на самом деле, я просто не понимаю, как, учитывая то, как экземпляр контроллера, он мог иметь совет применяется.

ответ

0

Возможна одна из возможных причин, если вы используете это в Eclipse - в проекте с включенным ajbuilder, даже если вы явно ожидаете Spring AOP через динамические прокси-серверы, ajbuilder фактически выполнит компиляцию командного плетения, и, следовательно, вы увидите совет расширенные классы, даже используя обычные «новые». Можете ли вы проверить это, исправить было бы отключить «ajbuilder» - вот одна ссылка - JUnit weaving wrong Spring AOP Bean

+0

Я не вижу ссылки на ajbuilder в свойствах этого проекта, но это проект maven, не являющийся построенный (исключительно) в затмении. В pom.xml для проекта я вижу зависимость для aspectjweaver. Может ли это быть связано? – Ben

+0

Нет, я сомневаюсь, что это возможно, у вас есть 'aspectj-maven-plugin' в вашем pom.xml. –

Смежные вопросы