如何为抛出异常的if代码块编写JUnit测试用例
单元测试实现方法
你给出的是Java风格的字符串空校验逻辑,当入参str为null时会抛出信息为exception occurred的异常,我们可以用JUnit 5单元测试框架编写测试用例,覆盖两个核心测试场景:
- 入参为非
null值时,逻辑正常执行不抛出异常 - 入参为
null值时,抛出符合类型和信息要求的异常
我们假设这段校验逻辑封装在TestTarget类的checkString方法中,原业务代码如下:
public class TestTarget { public void checkString(String str) throws Exception { if(str == null){ throw new Exception("exception occurred"); } // 其余业务逻辑 } }
对应的单元测试代码示例:
import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertThrows; public class StringCheckTest { private final TestTarget testTarget = new TestTarget(); // 测试非空入参场景 @Test public void testCheckStringWithNonNullInput() { String testInput = "valid string"; // 校验方法执行无异常 assertDoesNotThrow(() -> testTarget.checkString(testInput)); } // 测试空入参场景 @Test public void testCheckStringWithNullInput() { String testInput = null; // 校验抛出的异常类型和信息符合预期 Exception exception = assertThrows(Exception.class, () -> testTarget.checkString(testInput)); assert exception.getMessage().equals("exception occurred"); } }
如果你使用其他编程语言,实现思路完全一致:分别构造空和非空两类入参,分别校验执行结果是否符合预期即可。
内容的提问来源于stack exchange,提问作者Bala
相关产品推荐
相关产品推荐

