0
我有以下代碼TestNG的模擬方法的返回值
private EditAttribute editAttr;
@Mock
private EditAttributeService editAttrServ;
@Mock
private EditAttributeDAO editAttributeDAO;
@DataProvider(name = "getNamesValues")
public Object[][] createData1() {
return new Object[][] {
{ new EditAttribute.Builder().bioId("abc").sheetId("12e").fid("9BD2B75E-3B00-11DF-B7E4-005056A3157F").context("[{\"id\": 'B8031714-F23B-11DF-8F44-005056A3157F_C4B10A72-F25C-11DF-8F44-005056A3157F',\"value\": \"123\"},{\"id\": '4AB3CB04-2527-11DF-994B-005056A3157F_00CA7BCA-3B9B-11DF-B7E4-005056A3157F' ,\"value\": \"12322\"}]").target("").value("").build() }
};
}
@BeforeClass
public void setUp() {
MockitoAnnotations.initMocks(this);
editAttrServ = new EditAttributeService();
}
@Test(dataProvider ="getNamesValues")
public void TestselectAttributes(EditAttribute editAttribute){
LinkedHashMap<String,LinkedList<String>> queryRes=new LinkedHashMap<String,LinkedList<String>>();
LinkedList<String> columnsnames=new LinkedList<String>();
columnsnames.add("city");
queryRes.put("ColumnName",columnsnames);
LinkedList<String> tableName=new LinkedList<String>();
tableName.add("Dim_Plant");
queryRes.put("TableName",tableName);
System.out.println("queryRes="+queryRes.size());
Mockito.when(editAttributeDAO.getNames("", "", "", "", "")).thenReturn(queryRes);
Assert.assertEquals(editAttrServ.selectAttribute(editAttribute,"","").size(),2);
}
方法editAttributeDAO.getNames( 「」, 「」, 「」, 「」, 「」)確實給DAO類方法的調用。我期待這種方法不被執行,因爲我使用mockito時和定義返回值。但似乎失敗,方法被調用。難道我做錯了什麼?
BeforeClass通常期望setUp方法是靜態的,並且引用'this'並不是真的在那裏。嘗試之前(BeforeClass通常會引發異常,如果您嘗試註釋非靜態成員,但我正在使用Mockito 2.0.2-beta)。請參閱:http://junit.org/junit4/javadoc/latest/org/junit/package-summary.html – AlexC
「EditAttributeDAO」和「EditAttributeDAO.getNames」是公共的,非靜態的還是非最終的? –