弹簧方面应用于应用程序上下文之外(在剔除单元测试中)

时间:2012-06-22 18:57:30

标签: spring unit-testing mockito aop

这是一个奇怪的。我有一些测试失败,因为正在应用一个方面,所以自动装配的服务是空的,随之而来的是坏事。问题是我无法理解如何甚至被应用的方面,因为在测试中我使用new构建了测试对象。<​​/ p>

@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);
...    
}
}

我显然省略了大量的代码,但实际上,我只是不明白,如果实例化控制器,它可能已经应用了建议。

1 个答案:

答案 0 :(得分:0)

一个可能的原因可能是如果你在Eclipse中运行它 - 在启用了ajbuilder的项目中,即使你明确期望Spring AOP通过动态代理,ajbuilder实际上会执行编译团队编织,因此你会看到增强的建议甚至使用普通的“新”课程。你可以检查一下,解决方法是禁用“ajbuilder” - 这是一个参考 - JUnit weaving wrong Spring AOP Bean