模拟方面,testng和spring 4

时间:2016-03-09 15:58:13

标签: java maven unit-testing testng aop

我有一个非常基本的场景,我只需要调用一个带注释的方法。这个注释只是调用一个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中没有任何变化。)

所以,我的问题是:

  • 如何使测试使用方面I或spring创建的实例,以便在调用方法MyMethod时,其依赖关系到位,或者使用模拟版本?
  • This problem is basically equivalent,
  • 如果没有一行XML配置,我该怎么做 - 我已经看到使用了很多提到的apectOf工厂方法配置,但是如果可能的话我需要一个纯注释解决方案;
  • 使用TestNg而不是JUnit;

谢谢!

0 个答案:

没有答案