Как обработать отрицательный контрольный пример JUNIT для работы Elasticsearchn CRUD - PullRequest
1 голос
/ 07 февраля 2020

Я создал тестовые сценарии JUNIT для операции CRUS эластичного поиска. Я дал приведенный ниже код. После фазы просмотра кода я получил от команды обновление, в котором описал все положительные сценарии тестовых случаев, которые еще не охватили отрицательный сценарий ios. Я не знаю, как обрабатывать отрицательные сценарии использования.

@Test
void findById() throws Exception {

    EmployeeInformation EmployeeGet = Eservice.findById("elcrud", "2");

    assertNotNull(EmployeeGet.getId());

    assertNotNull(EmployeeGet.getFirstName());

    assertNotNull(EmployeeGet.getLastName());

}

@Test
void deleteProfileDocument() throws Exception {

    String Result = Eservice.deleteProfileDocument("elcrud", "3");

    System.out.println(Result);

    assertEquals(Result, "DELETED");
}

@Test
void search() throws Exception {

    List<EmployeeInformation> Emp=Eservice.searchByTechnology("Lucidworks","elcrud");

    System.out.println(Emp.size());

    int Result = Emp.size();

    assertTrue(Result  >= 0 );
}

@Test
void searchByName() throws Exception {

    List<EmployeeInformation> Emp=Eservice.findProfileByName("junit","elcrud");

    System.out.println(Emp.size());

    int Result = Emp.size();

    assertTrue(Result  >= 0 );
}

Может ли кто-нибудь помочь мне реализовать отрицательный сценарий контрольных примеров JUNIT для приведенного выше кода?

Ответы [ 2 ]

1 голос
/ 07 февраля 2020
    @Test(expected = NotFound.class)
void shouldThrowExceptionWhenProfileIsNotExist() throws Exception {

    Eservice.findById("elcrud", "some_id");
}

Вместо NotFound разместите исключение, которое выдается при поиске профиля с идентификатором, которого не существует

1 голос
/ 07 февраля 2020

Я думаю, что ваша техническая команда хочет провести тест, если работа ES не удалась, не дали результатов или произошел какой-либо другой неожиданный сценарий.

Одним из примеров может быть удаление документа профиля:

Вы уже прошли тест, если операция удаления прошла успешно. Но у вас нет теста, если эта операция завершилась неудачно или не обработана успешно.

@Test
void deleteProfileDocument() throws Exception {

    //here you delete a profile which is NOT in the index
    String Result = Eservice.deleteProfileDocument("elcrud", "3");

    System.out.println(Result);

    //and here you asssert the negative result. (Not sure which result will come)
    assertEquals(Result, "NOT_FOUND");
}

Я также вижу, что в вашем тесте выдается исключение в случае ошибки. Это может быть еще один хороший негативный тестовый сценарий. Итак, если вы можете отправить операцию в ES, и эта операция выдает исключение, вы можете создать тест для ожидания этого исключения.

Для Junit4 вы можете использовать следующее:

@Test(expected = YourExpectedException.class)

Для Junit5 вы можете использовать это:

Exception exception = assertThrows(YourExpectedException.class, () -> {
        Eservice.findProfileByName(Exception values);
    });

    String expectedMessage = "expected message";
    String actualMessage = exception.getMessage();

    assertTrue(actualMessage.contains(expectedMessage));

РЕДАКТИРОВАТЬ с помощью дополнительных вопросов

Если у вас положительный и отрицательный тест, я бы посоветовал оставить их в отдельных методах тестирования. Таким образом, вам не нужно будет комментировать вещи.

В вашем случае это может быть как:

положительное:

@Test
void testUpdateItem_POSITIVE() throws Exception {
....
}

отрицательное:

@Test
void testUpdateItem_NEGATIVE() throws Exception {
....
}
...