Обработка множественных исключений с использованием тестовых примеров JUNIT5 - PullRequest
0 голосов
/ 11 февраля 2020

Я создал контрольный пример JUNIT для своей операции DynamoDB CRUD. Я использовал утверждения для обработки неожиданного источника исключений в приведенном ниже коде.

@Test
void createItemsInTable() throws Exception {

    Assertions.assertThrows(UnexpectedException.class, () -> {

        ResponseEntity Res;

        CatalogItems cat = new CatalogItems(3, "", "fghsdfh");

        Res = Eservice.createItemInDynamoDbTable(cat);

        System.out.println(Res.getStatusCodeValue());

        CatalogItems cat2 = Eservice.findById("3");

        assertEquals(Res.getStatusCodeValue(), 201);

        assertEquals(cat2.getTitle(), cat.getTitle());

        assertEquals(cat2.getAuthor(), cat.getAuthor());

        assertEquals(cat2.getId(), cat.getId());

    });

}

Как мне указать несколько исключений в приведенном выше тестовом примере JUNIT для ex: UnexpectedException, ResourceNotFoundException et c ...

Ответы [ 2 ]

0 голосов
/ 12 февраля 2020

Я бы разделил три разных сценария ios на собственные тестовые случаи. Аналогично этому:

@Test
void updateItem() throws Exception {
    CatalogItems cat = new CatalogItems(1, "xxxx", "f");

    ResponseEntity Res = Eservice.updateItemInDynamoDbTable(cat);

    System.out.println(Res.getStatusCodeValue());

    CatalogItems cat2 = Eservice.findById("1");

    assertEquals(Res.getStatusCodeValue(), 201);

    assertEquals(cat2.getAuthor(), cat.getAuthor());

    assertEquals(cat2.getTitle(), cat.getTitle());

    assertEquals(cat2.getId(), cat.getId());
}

@Test
void updateItemFailsWhenDestinationIsNotFound() {
    CatalogItems cat = new CatalogItems(3, "xxx", "xxx");

    Exception exception = assertThrows(ResourceNotFoundException.class, () -> {
        ResponseEntity Res = Eservice.updateItemInDynamoDbTable(cat);
    });

    String expectedMessage = "ResourceNotFoundException";

    String actualMessage = exception.getMessage();

    assertTrue(actualMessage.contains(expectedMessage));
}

@Test
void updateItemFailsWhenIdIsNotAvailableAtDestination() {
    CatalogItems cat = new CatalogItems(3, "xxx", "xxx");

    Exception exception = assertThrows(NullPointerException.class, () -> {
        ResponseEntity Res = Eservice.updateItemInDynamoDbTable(cat);
    });

    System.out.println(exception.getMessage());

    assertNull(exception.getMessage());
}

Хорошей практикой является использование только кода, который фактически генерирует исключение в лямбде assertThrows. Таким образом, вы можете быть уверены, что этот код не работает.

Я бы также рекомендовал придерживаться соглашения об именовании Java, то есть иметь члены, переменные и параметры в нижнем регистре верблюда.

0 голосов
/ 12 февраля 2020

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

@Test
void updateItem() throws Exception {

    //Positive test case

    ResponseEntity Res;

    CatalogItems cat = new CatalogItems(1, "xxxx", "f");

    Res = Eservice.updateItemInDynamoDbTable(cat);

    System.out.println(Res.getStatusCodeValue());

    CatalogItems cat2 = Eservice.findById("1");

    assertEquals(Res.getStatusCodeValue(), 201);

    assertEquals(cat2.getAuthor(), cat.getAuthor());

    assertEquals(cat2.getTitle(), cat.getTitle());

    assertEquals(cat2.getId(), cat.getId());



    //Negative test case - if the destination is not found

        Exception exception = assertThrows(ResourceNotFoundException.class, () -> {

            ResponseEntity Res;

            CatalogItems cat = new CatalogItems(3, "xxx", "xxx");

            Res = Eservice.updateItemInDynamoDbTable(cat);

        });

        String expectedMessage = "ResourceNotFoundException";

        String actualMessage = exception.getMessage();

        assertTrue(actualMessage.contains(expectedMessage));



    //Negative test case for updating Id which is not available at destination

        Exception exception = assertThrows(NullPointerException.class, () -> {

            ResponseEntity Res;

            CatalogItems cat = new CatalogItems(3, "xxx", "xxx");

            Res = Eservice.updateItemInDynamoDbTable(cat);

        });

        System.out.println(exception.getMessage());

        assertNull(exception.getMessage());

}

Не могли бы вы подтвердить способ подготовки и выполнения тестового примера в порядке, иначе придется изменить способ тестирования?

...