Я делаю тестовые примеры, и я не знаю, как проверить эту функцию. Не могли бы вы дать мне несколько идей? Я пытался использовать Mockito, но я все равно получаю null. Буду признателен за вашу помощь.Android Test - Как я могу проверить эту функцию?
Это функция, которую я хочу проверить.
public static Date optDate(JSONObject json, String key) {
if(!json.isNull(key)) {
try {
DateTime dt = JSONUtils.dateFormatter.withZoneUTC().parseDateTime(json.optString(key));
Date date = dt.toDate();
return date;
} catch(Exception e) {
}
}
return null;
}
И я тестирую его таким образом.
@RunWith(MockitoJUnitRunner.class)
public class JSONUtilsTest {
static String dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
static DateTimeFormatter dateFormatter = DateTimeFormat.forPattern(dateFormat);
DateTime dt = JSONUtilsTest.dateFormatter.withZoneUTC().parseDateTime("2011-11-02T02:50:12.208Z");
Date date = dt.toDate();
@Mock
JSONObject JSONMock = Mockito.mock(JSONObject.class);
JSONUtils mJSONUtils = Mockito.mock(JSONUtils.class);
@Before
public void setup() {
doReturn(date).when(mJSONUtils).optDate(JSONMock,"possessionDate");
}
@Test
public void optDateShouldReturnValueOnValidString() {
Date result = JSONUtils.optDate(JSONMock, "possessionDate");
Assert.assertEquals("2011-11-02",result);
}
}
***************************** ИЗМЕНИТЬ 1 ************ ***********************************
После попытки найти правильный способ протестировать этот метод , Я сделал это.
@RunWith(MockitoJUnitRunner.class)
public class JSONUtilsTest {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
Date today = new Date();
String todayString = dateFormat.format(today);
@Mock
JSONObject JSONMock = Mockito.mock(JSONObject.class);
@Before
public void setup() {
when(JSONUtils.optString(JSONMock, "possessionDate")).thenReturn(todayString);
}
@Test
public void optDateShouldReturnValueOnValidString() {
Date result = JSONUtils.optDate(JSONMock, "possessionDate");
Assert.assertEquals(today,result);
}
Если я ошибаюсь: единственное, что вам нужно для управления здесь, - это объект 'json'. Значение: вы можете/должны проверить, вызваны ли эти два метода 'isNull()' и 'optString()' для объекта, который вы предоставили тестируемому методу. – GhostCat
@ Jägermeister Как я могу это сделать? Я пытался проверить, возвращает ли этот метод правильное значение. Im test 'opString()' следующим образом: @Before public void setup() { когда (JSONUtils.optString (JSONMock, «name»)). ThenReturn («Daniel»); когда (JSONUtils.optString (JSONMock, "city")). ThenReturn (null); когда (JSONUtils.optString (JSONMock, «lastname»)), затемReturn (""); } @Test общественного недействительными optStringShouldReturnValidStringOnName() { результат String = JSONUtils.optString (JSONMock, "название"); Assert.assertEquals (результат «Даниэль»); } –
Вы создаете макет, который ожидает два вызова и возвращает то, что вы хотите вернуть? Как в вашем методе настройки? – GhostCat