Java @InjectMock在使用spring aop时不起作用

Java @InjectMock在使用spring aop时不起作用,java,spring,junit,mockito,spring-aop,Java,Spring,Junit,Mockito,Spring Aop,我正在编写junit,我使用@mock和@injectMock。但是,我发现@injectMocks在spring aop中使用bean时不起作用。代码如下: QuestionService.java: @Component public class QuestionService implements IQuestionService{ @Resource private IUserService userService; @Override public User findU

我正在编写junit,我使用@mock和@injectMock。但是,我发现@injectMocks在spring aop中使用bean时不起作用。代码如下:

QuestionService.java:

@Component
public class QuestionService implements IQuestionService{
  @Resource
  private IUserService userService;
  @Override
  public User findUserById(long id) {
    // TODO Auto-generated method stub
    User user = userService.findUserById(id);
    return user;
  }
}
Test.java:

@Mock
IUserService mockuserService;
@InjectMocks
@Resource
QuestionService questionService;
@Before
public void setUp() throws Exception {
    MockitoAnnotations.initMocks(this);
}

@Test
public void testfind() {
    when(mockuserService.findUserById(1)).thenReturn(
            new User(1, "name"));
    User user = questionService.findUserById(1);
    Assert.assertEquals(new User(1, "name"), user);
}
它起作用了

但是,当我在SpringAOP中添加userService时,它不起作用

例如,事务aop


我如何修复它?

为什么在测试课上用
@Resource
注释
QuestionService
?您是否通过加载bean配置来使用
SpringJUnit4ClassRunner
运行?如果不删除
@Resource
注释并尝试,无论是否使用AOP,它都应该工作

并在测试类的方法之前的
@中添加下面的代码片段作为第一行

MockitoAnnotations.initMocks(this);
@InjectMocks:标记应在其上执行注入的字段。
MockitoAnnotations.initMocks(this):初始化用Mockito注释注释的字段。

为什么在测试类中用
@Resource
注释
QuestionService
?您是否通过加载bean配置来使用
SpringJUnit4ClassRunner
运行?如果不删除
@Resource
注释并尝试,无论是否使用AOP,它都应该工作

并在测试类的
方法之前的
@中添加下面的代码片段作为第一行

MockitoAnnotations.initMocks(this);
@InjectMocks:标记应在其上执行注入的字段。
MockitoAnnotations.initMocks(this):初始化用Mockito注释注释的字段。

我发现了一个有趣的行为-一旦我在类中的任何方法周围使用AOP,mock就停止工作;相反,启动了“真实”组件,尽管没有相关的代码。
我发现,如果你使用@MockBean,一切都会正常工作。

我发现了一个有趣的行为——一旦我在类中的任何方法上使用AOP,mock就停止工作了;相反,启动了“真实”组件,尽管没有相关的代码。
我发现,如果您使用@MockBean,一切都会正常工作。

是的,我使用SpringJUnit4ClassRunner运行。.如果questionService有我要模拟的userService和我要在spring加载的tagService,我该怎么做?tagService从何而来?请更新您的问题。是的,我使用SpringJUnit4ClassRunner运行..如果questionService有我想要模拟的userService和我想要通过spring加载的tagService,我该怎么做?tagService从何而来?请更新您的问题。