Mockito的@InjectMock失效?

linlias12 2015-05-06 11:53:10
测试类

public class Test{
@Resource(name = "testFacade")
@InjectMocks
private testFacade facade;
@Mock
private TestInf inf;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void test(){
//设置inf预期的行为
when(inf.doSoming()).thenReturn("调用mock注入的bean");
//调用facade开始测试
String result = facade.facadeTest();
System.out.printpl(result);//输出 : “调用Spring的bean [@Resource注入的]” 而不是 “调用mock注入的bean”
}
}

facade的实现

public class testFacadeImpl{
@Resource(name="inf")
private TestInf inf;
public String facadeTest(){
return inf.doSoming();
}
}

inf 的实现

@Service("inf")
public class TestInfImpl{

public String doSoming(){
return "调用Spring的bean [@Resource注入的]";
}
}

大体就是这样的了,全部采用注解的形式,spring+mockito+junit

测试类里将inf对象mock后注入到facade中,然后在测试方法中执行facade的方法。

但是现在问题是facade的inf属性没有被@Mock标签注入,而是调用了@Resource标签,用的是spring生成的bean 而不是mock的inf,输出了“调用Spring的bean [@Resource注入的]” 而不是 “调用mock注入的bean”,并且,删除@InjectMock标签对执行结果没有影响
想问一下什么情况会导致@InjectMock标签失效?已排除自动扫描注解路径错误的可能?
...全文
1205 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
CaptainCodeWriter 2017-10-16
  • 打赏
  • 举报
回复
使用2楼的方法,增加setter方法后测试通过
Ericsson5 2017-02-20
  • 打赏
  • 举报
回复
我加了setter方法之后就可以了
查理001 2016-10-12
  • 打赏
  • 举报
回复
解决了吗?我也碰到这样的问题

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧