spring方面在应用程序上下文之外应用(在存根单元测试中)

spring方面在应用程序上下文之外应用(在存根单元测试中),spring,unit-testing,mockito,aop,Spring,Unit Testing,Mockito,Aop,这里有一个奇怪的。我有一些测试失败,因为应用了一个方面,所以自动连线服务为空,坏事情接踵而至。问题是,我甚至无法理解方面是如何应用的,因为在测试中,我使用new构造了测试对象 @RunWith(MockitoJUnitRunner.class) public class TheControllerTest { @Spy private TheController controller = new TheController(); @Mock private H

这里有一个奇怪的。我有一些测试失败,因为应用了一个方面,所以自动连线服务为空,坏事情接踵而至。问题是,我甚至无法理解方面是如何应用的,因为在测试中,我使用new构造了测试对象

@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);
...    
}
}
@RunWith(MockitoJUnitRunner.class)
控件测试的公共类{
@间谍
专用控制器控制器=新控制器();
@嘲弄
私有HttpServletRequest;
@嘲弄
专用配置服务配置服务;
....
@以前
公共作废设置(){
controller.setConfigService(configService);
....
}
@试验
public void testGetAccountsList()引发异常{
Mockito.when(accountService.getAllAccounts())。然后返回(Arrays.asList(account1,account2));
映射结果=controller.getAccountsList(请求);
...    
}
}

很明显,我省略了很多代码,但实际上,我只是不明白,考虑到控制器是如何实例化的,它是如何应用建议的。

一个可能的原因可能是,如果您在Eclipse中运行此功能-在启用ajbuilder的项目中,即使您明确希望通过动态代理使用Spring AOP,ajbuilder实际上会执行编译团队编织,因此即使使用普通的“new”,您也会看到建议增强的类。请您检查一下,修复方法是禁用“ajbuilder”-这里有一个引用-

我在这个项目的属性中没有看到任何对ajbuilder的引用,但是这是一个maven项目,不是在eclipse中(专门)构建的。在项目的pom.xml中,我确实看到了aspectjweaver的依赖关系。这可能有关系吗?不,我怀疑这可能是它,您的pom.xml中是否有
aspectj maven插件