当前位置: 首页 > 知识库问答 >
问题:

从负JUnit测试中隐藏预期错误

吕英豪
2023-03-14

我有这个JUnit测试,它测试的是阴性情况:

@Test
public void campaignTest() {

    Long campaignId = givenANotFoundCampaign();

    try {
        BonusSystemCampaign byId = bonusSystemCampaignService.getBonusSystemCampaign(campaignId, BonusSystemCampaign.class);

        assertNull(byId);
    } catch (Exception e){
        // e.printStackTrace();
    }
}

当我执行它时,我得到错误:

Java . io . filenotfoundexception:http://localhost:12460/campaign/internal/campaigns/123 at Java . base/JDK . internal . reflect . nativeconstructoraccessorimpl . new instance 0(本机方法)at Java . base/JDK . internal . reflect . nativeconstructoraccessorimpl . new instance(nativeconstructoraccessorimpl . Java:77)at Java . base/JDK . internal . reflect . delegatingconstructoraccessorimpl . new instance(delegating

这个错误是正确的,但我想隐藏错误堆栈。我如何实现这一点?

共有1个答案

巢海
2023-03-14

如果您的意图是检查此用例是否按预期抛出异常,您可以尝试以下操作:

  • 如果使用JUnit4,则添加以下注释:@Test(expected=FileNotFoundException.class)

这意味着你期望这个概念通过测试

>

  • 如果使用JUnit5:

    FileNotFoundException异常=assertThrows(FileNotFountException.class,()-

    通过这种方式,您可以处理FileNotFoundException类型的变量

  •  类似资料:
    • 我想测试某个异常是用作为JUnit测试方法的某个部分中的异常原因抛出的。 测试方法本身不应该抛出异常--只是它的一个特定部分。

    • 使用Broadleaf 5.2.2-GA版多租户版本 请帮助检查如何解决此错误。

    • 问题内容: 如何在JUnit 4中将测试标记为预期的失败? 在这种情况下,我想继续运行此测试,直到上游修补了某些内容。忽略测试有点太过分了,因为我可能会忘记它。我也许可以添加注释并捕获由引发的异常,但这似乎也与预期的行为有关。 这是我当前的测试结果: 该断言应该会成功,但是由于上游错误,它不会成功。然而,这个测试是正确的。它应该成功。实际上,我发现的所有替代方案都具有误导性。现在,我认为这是我最好

    • 如果我这样做: [更新2]:最初这只是影响我的例程,但现在我正在编写测试,我意识到它实际上无处不在,即mvn和junit5隐藏了我所有的堆栈痕迹。

    • 这就是我的应用程序中测试的样子: 我怎样才能避免这种行为呢?

    • 主要内容:1. 运行时异常,2. 检查异常在本教程中,我们将演示如何使用TestNG expectedExceptions来测试代码中的预期异常抛出。 创建一个名称为 ExpectedExceptionTest 的 Maven 工程,其结构如下所示 - 1. 运行时异常 此示例显示如何测试运行时异常。 如果方法抛出一个运行时异常 — ,它会获得通过。 创建一个测试文件:TestRuntime.java ,其代码如下所示 - 运行上面代码,