如何使用单元测试测试我的自定义异常

约翰·莫恩

您好,我已经为我的逻辑写了一个测试用例,所有这些都运行良好。但是,我不知道如何测试自定义异常。我的代码如下;

 @Component
    public class PlaneFactory {
    
        public Plane getPlane(String planeType) {
        
            if (StringUtils.isBlank(planeType)) {
                throw new PlaneTypeNotFoundException();
            }
        
            if (planeType.equalsIgnoreCase("lightJet")) {
                return new LightJet();
        
            } else if (planeType.equalsIgnoreCase("midJet")) {
                return new MidJet();
            }
           
            else {
                 throw new InvalidPlaneTypeException();
                 }

       my custom exceptions below;


     PlaneTypeNotFoundException class below;


public class PlaneTypeNotFoundException extends RuntimeException {
    
        private static final long serialVersionUID = 4314211343358454345L;
    
        public PlaneTypeNotFoundException() {
    
            super("You have not enter anything to check a plane");
        }
    
    }
    InvalidPlaneTypeException below;



public class InvalidPlaneTypeException extends RuntimeException {
          
        public InvalidPlaneTypeException() {
    
            super("You need to enter one of following plane types : {LightJet, MidJet}");
        }
    
    }

哪些方法适合使用?我的意思是在这种情况下,我应该使用assertThrows还是仅使用预期的注释?

对于PlaneTypeNotFoundException我已经尝试了一些低于它的方法

@Test
public void testPlaneFactory_isEmptyOrNull_ThenReturnException() {

    String planeType = "";

    LightJet lightJet= (LightJet) planeFactory.getPlane(planeType);

    assertThrows(PlaneNotFoundException.class, () -> lightJet.getType().equalsIgnoreCase(planeType), "You have not enter anything to check a plane");
}
大步走

如果我正确地遵循您的代码,则可执行代码lambdaassertThrows()应该是您希望生成异常的代码:

public void testPlaneFactory_isEmptyOrNull_ThenReturnException() {
    assertThrows(PlaneNotFoundException.class, () -> planeFactory.getPlane(""));
}

如果确实抛出异常,则测试应通过。

第二种情况的测试是:

void testInvalidPlaneType() {
    assertThrows(InvalidPlaneTypeException.class, () -> planeFactory.getPlane("doh"));
}

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

单元测试自定义异常

PHPUnit Laravel:如何对自定义异常处理程序进行单元测试?

春季-使用模拟单元测试-如何在服务单元测试中模拟自定义收集器

自定义油门单元测试

单元测试自定义AuthorizationFilterAttribute

单元测试自定义 InputFormatter

单元测试自定义UITableViewCell?

单元测试自定义MessageHandler

如何对自定义的Jackson JsonSerializer进行单元测试?

如何对自定义Wicket组件进行单元测试

如何对自定义JsonConverter进行单元测试

使用单元测试创建自定义迭代器

在进行单元测试时如何调用React组件的自定义方法。我正在使用打字稿

如何使用JSm对Jest中的自定义元素执行单元测试

如何使用Java对自定义日期反序列化器进行单元测试

如何使用Jasmine(Angular JS)对自定义装饰器进行单元测试

使用 Moq 进行单元测试时如何绕过(自定义)MessageBoxes?

自定义异常的单元测试(链式异常 python 3)

自定义 GNU 无线电 python 块中引发的异常的单元测试

Python:涉及try-Except时,引发自定义异常的单元测试失败

单元测试时未找到自定义注释

单元测试中的自定义例外

Laravel单元测试因自定义属性而失败

对自定义Web API AuthorizeAttribute进行单元测试

单元测试自定义ConfigurationElement和ConfigurationElementCollection

单元测试自定义OnRender-Method

对ngx形式的自定义模板进行单元测试

Angular 2自定义验证单元测试

单元测试:自定义计时器断言