基本使用方法:
http://zhongl.iteye.com/blog/296136
一、問題:如何將mock的類自動注入到待測類,特別是在沒有setter方法的情況下。
解答:
前提:待測的service類及其依賴的其他類都是處在被spring管理中的。
做法:在測試類中,只要將待測的類標注為@InjectMocks,將其依賴的其他類標注為 @Mock,
就可以使用MockitoAnnotations.initMocks(this);這句話自動將依賴的類注入待測類,如果依賴類在spring的管理下有自己的name,那么甚至在待測類中都不需要寫setter方法。
例:
1、待測類
@Component("abcService")
public class AbcService {
@Resource(name="aaaDao")
private AaaDao aaaDao;
@Resource(name="bbbDao")
private BbbDao bbbDao;
......//注:此處省略的代碼中並不包含aaaDao和bbbDao的setter方法。
}
2、測試類
public class AbcServiceTest{
@InjectMocks
AbcService abcService;
@Mock
AaaDao aaaDao;
@Mock
BbbDao bbbDao;
@Before
public void setup(){
MockitoAnnotations.initMocks(this);//這句話執行以后,aaaDao和bbbDao自動注入到abcService中。
//在這之后,你就可以放心大膽地使用when().then()等進行更詳細的設置。
}
}
參考資料 :
http://www.cnblogs.com/alphablox/archive/2012/12/09/2810538.html
http://www.cnblogs.com/alphablox/archive/2013/04/06/3002152.html
二、問題:如何對連續的調用進行不同的返回
參考資料: