我有一个非常基本的场景,我只需要调用一个带注释的方法。这个注释只是调用一个AspectJ建议。我只需要确保调用建议,理想情况是通过模拟验证。使用TestNG进行测试并使用Mockito进行模拟。 Spring是版本4。
考试中的课程
public class MyClassUT
{
@MyAnnotation
public myMethod...
{
...
}
}
测试类
@ContextConfiguration(classes = {SpringTestConfig.class})
@WebAppConfiguration
public class MyClassUtTest extends AbstractTestNGSpringContextTests
{
@InjectMocks private MyClassUT mine;
@BeforeMethod
public void init()
{
MockitoAnnotations.initMocks(this);
}
@Test
public void testMyMethod()
{
mine...
}
}
问题是正在调用通知并且一切正常,除了在春天之前将通知类实例化一次并且在调用所述方法之前另一次实例化。正在使用的实例是后者,当然没有注入依赖项,因此它失败了。我要做的是为spring提供一个模拟我的建议,或至少注入一个它所依赖的服务的模拟,并要求AspectJ使用现有的实例。
我已尝试使用工厂方法进行建议,弹簧测试配置等,但似乎没有任何工作。我也尝试过使用EnableAspectJautoproxy无效,用@Bean注释实例化方面,也作为工厂方法 - 但遗憾的是没有任何效果。
(值得注意的是,当我在eclipse中启用AspectJ时,方面测试也在maven中运行,据我所知,pom.xml中没有任何变化。)
所以,我的问题是:
谢谢!