[英]Object creation mocking mockito
我有一個班級的頂部和底部。 我想對創建底部對象的原子類進行單元測試。
public class top {
publiv top() {
bottom b = new bottom("value");
}
}
單元測試班:
public class topTest {
@Test
public void test(){
top a = new top();
}
}
在測試中為頂級類別創建對象時,它將為底層類別創建對象。
在這里,我想模擬底層對象的創建。 誰能幫我這個忙。
為此,您應考慮將底部對象作為參數傳遞。 當對象依賴於該對象時,始終將對象作為參數傳遞始終是一個好習慣。
public class Top {
private Bottom bottom;
public Top(Bottom bottom) {
this.bottom = bottom
}
}
public class TopTest {
@Test
public void test(){
Bottom bottom = mock(Bottom.class);
Top top = new Top(bottom);
}
}
您將需要將創建底部實例的邏輯移動到某個地方。 可以使用類似的可覆蓋方法:
public class top {
public top() {
bottom b = new bottom("value");
}
protected bottom createBottom() {
return new bottom("value");
}
}
然后您可以在測試中覆蓋它:
public class topTest {
@Test
public void test(){
top a = new top() {
protected bottom createBottom() {
return Mockito.mock(bottom.class);
}
};
}
}
或者,您創建一個BottomCreator類,在構造時將其傳遞給Top,並在測試時使用模擬/偽造版本。
public class top {
private final BottomCreator bottomCreator;
public top(BottomCreator creator) {
this.bottomCreator = creator;
}
public top() {
bottom b = bottomCreator.newBottom();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.