JUnit测试:如何测试扩展Exception的自定义空java类?

wwwo4jvm  于 2022-11-24  发布在  Java
关注(0)|答案(2)|浏览(129)

我目前正在尝试扩展一个基于学校的作业Web应用程序的测试覆盖率,因为我遇到了一个完全空的类,它扩展了Exception,并且根据覆盖率报告不包含任何覆盖率。
通常情况下,我会认为这样的事情可以忽略不计。然而,我们的整体测试覆盖率因素直接影响到我们对这门课程的个人评分。因为这一点,而且这是接近学期末,我试图通过代码标记的覆盖率报告中逐行和整理任何我可以。
在浏览了课程内容和在线搜索之后,我不确定如何继续为这样的类编写测试。这个服务器端类包含在我们的初始代码库中,该代码库是在学期开始时由教师提供给我们的(随着学期的进展,我们在代码库上构建)。
Java类的完整代码:

package <package_name>;
/*
 * This is a custom exception that fits our personal
 * needs and won't collide with existing issues.
 */
public class BadRequestException extends Exception {}

如何使用该类的一个示例(仍是教师提供的代码):

private String processHttpRequest(spark.Request httpRequest, spark.Response httpResponse, Type requestType) {
    setupResponse(httpResponse);
    String jsonString = httpRequest.body();
    try {
        JSONValidator.validate(jsonString, requestType);
        Request requestObj = new Gson().fromJson(jsonString, requestType);
        return buildJSONResponse(requestObj);
    } catch (IOException | BadRequestException e) {                // <---- Here
        log.info("Bad Request - {}", e.getMessage());              // <----
        httpResponse.status(HTTP_BAD_REQUEST);
    } catch (Exception e) {
        log.info("Server Error - ", e);
        httpResponse.status(HTTP_SERVER_ERROR);
    }
    return jsonString;
}

我目前拥有的(几乎没有):

package <package_name>;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.DisplayName;

public class TestBadRequestException {

    @Test
    @DisplayName("Test Empty BadRequestException Class")
    public void testBadRequestException() {
        
    }
}

在学期开始之前,我没有使用JUnit的经验。所以,任何反馈/参考/建议都非常感谢。

编辑(解决方案):

这个帖子的第一条评论提供了我正在寻找的解决方案。我没有想到会这么简单。
解决方案是在下面的答案与适当的信贷。

cfh9epnr

cfh9epnr1#

我认为没有必要为该类编写单元测试。您可以尝试在代码覆盖率规则中排除它

zdwk9cvp

zdwk9cvp2#

@f1sh的解决方案积分

f1 sh的注解(原始解决方案)建议在JUnit测试中添加new BadRequestException()
这给了我一个想法,我希望如何改进这个建议。
我的最终结果:

package <package_name>;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.DisplayName;

import static org.junit.jupiter.api.Assertions.assertNotNull;

public class TestBadRequestException {

    @Test
    @DisplayName("Test Empty BadRequestException Class")
    public void testBadRequestException() {
        
        assertNotNull(new BadRequestException());      // <---- Here

    }
}

相关问题