我为我的 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] 删除。
我来说两句