2016-09-30 2 views
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 («», «», «», «», «») делает вызов метода класса ДАО. Я ожидаю, что этот метод не будет выполнен, так как я использовал mockito, когда и определяю возвращаемое значение. Однако кажется, что он терпит неудачу и метод вызван. Я делаю что-то неправильно?

+1

BeforeClass обычно ожидает, что метод setUp будет статичным, а ссылка на «это» на самом деле не ожидается. Try Before (BeforeClass обычно генерирует исключение, если вы пытаетесь аннотировать нестационарный член, но я использую Mockito 2.0.2-бета). См .: http://junit.org/junit4/javadoc/latest/org/junit/package-summary.html – AlexC

+0

Являются ли 'EditAttributeDAO' и' EditAttributeDAO.getNames' общедоступными, нестатическими и неконфиденциальными? –

ответ

0

У меня возникли проблемы с пониманием вашего теста. Кажется, что первые 9 строк являются частью настройки вашего теста. Поэтому я предполагаю, что «selectAttribute» - это бизнес-метод, который вы тестируете. Однако ваш код также вызывает этот метод на издеваемом объекте. Является ли EditAttributeService интерфейсом или классом? Если это интерфейс, то Mockito будет высмеивать метод selectAttribute для вас и возвращать пустую коллекцию. Если это класс, он выполнит существующий метод, но вы не сказали mocked editAttributeService, как он связан с «editAttributesDAO», и, скорее всего, он не использует результаты, которые вы настроили в начале теста метод.

Смежные вопросы