使用 JUNIT5 测试用例处理多个异常

莫汉维尔

我为我的 DynamoDB CRUD 操作创建了一个 JUNIT 测试用例。我在下面的代码中使用断言来处理意外的异常给出者。

@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 测试用例中指定多个异常,例如:UnexpectedException、ResourceNotFoundException 等...

约翰斯林克

我会将三个不同的场景分成它们自己的测试用例。类似的:

@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 lambda 中只有实际抛出异常的代码是一种很好的做法。这样你就可以确定是这段代码失败了。

我还建议坚持 Java 的命名约定,即成员、变量和参数采用小驼峰命名。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Spy(junit5)模拟jdbcTemplate查询异常

使用Spy(junit5)模拟jdbcTemplate查询异常

无法使用Maven执行Junit5测试

使用Junit5进行Gradle多项目集成测试

如何使用 JUnit5 在 OpenEJB 中测试 EJB Bean?

在junit5上使用测试服测试多个类即将挂起

使用JUnit5 assertThrows和WockWebServer测试挂起功能是否存在异常

在引发多个异常的测试用例中使用assertRaises()

使用JUnit 5运行Groovy测试用例

如何使用 Mockito 进行模拟并使用 Junit5 断言抛出的异常和消息?

如何使用JUnit5为Kafka消息使用者测试PACT

无法使用JUnit5控制台启动器运行测试

如何使用Maven运行作为插件安装到Eclipse应用程序的JUnit5测试

如何使用 JUnit5 在 Micronaut 的控制器测试中模拟服务类?

无法在Docker容器中使用Bazel运行JUnit5测试

未找到使用Bazel目标的Kotlin JUnit5测试

如何使用@RunWith(classOf [JUnitRunner])升级到Scala测试的JUnit5?

无法使用Spring Boot Gradle插件通过依赖项管理执行junit5测试

使用Selenium Webdriver和junit5进行端到端测试的最佳方法是什么?

使用Spring Boot和JUnit5在Intellij中终止所有测试

使用JUnit5和Spring-boot-starter-parent时不执行任何测试

如何使用Junit5和Jacoco配置build.gradle以进行测试覆盖

使用Cucumber JUnit5引擎选择单个测试失败

在 Spring Boot 中使用 JUnit5 和 Mockito 进行集成测试

使用LiveData进行JUnit5测试不会执行订阅者的回调

使用junit5时,Springboot测试无法自动连接TestRestTemplate

使用带有 jUnit5 和 SpringBoot 的随机端口进行契约测试

JUnit5使用Spring安全性测试安全控制器

在使用 Junit5 的 spock 单元测试中不考虑 @Rule 注释