java - 如何编写Junit测试来测试方法是否正确抛出异常?
问题描述
当名称为空时,如何测试以下方法是否抛出异常?
public boolean validateName(String name) {
if (name == null) {
throw new IllegalArgumentException("Name cannot be null");
}
if (name.isBlank()) { // checks if name is entirely whitespace
return false;
}
if (!name.contains(" ")) {
return false;
}
return true;
}
我已经测试了空白名称和包含空格的名称的所有情况,唯一剩下的就是名称为空时的测试,这就是我得到的:
@Test
public void handlesNullTest() {
String name = null;
NameValidator validator;
assertEquals("Name cannot be null", validator.validateName(name));
}
以上是在java Junit测试中测试抛出异常的正确方法吗?谢谢你。
解决方案
使用 Junit 4,您可以将属性用作 @Test 注释的属性来“预期”某个异常,如下所示:
@Test(expected = IllegalArgumentException.class)
public void whenExceptionThrown_thenExpectationSatisfied() {
String name = null;
NameValidator validator;
validator.validateName(name);
}
推荐阅读
- java - 为什么在heroku上部署时找不到jarfile?
- ios - SwiftUI ViewModel 发布的属性和绑定
- java - add (List ) 其中 Z 是一个 interface 。B 类扩展 A 实现 Z 为什么我们不能用 List 调用 add()
- sql - 具有两个不同 SQL 实例的 SQL 查询
- php - NotFoundHttpException 在 laravel 5.2 中
- algorithm - 如何检查给定的节点集是否是图的顶点割集?
- scripting - ZSH 自动补全:显示值 A,使用值 B
- flutter - 如何在颤动中制作可扩展的卡片堆栈
- intellij-idea - IntelliJ 在使用 ZSH 时没有拾取环境变量?
- java - 我需要帮助让我的输入按钮在用鼠标单击时工作