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

jUnit测试失败,尽管引发了预期的异常

柴辰阳
2023-03-14

这就是我的应用程序中测试的样子:

    @Test (expected = UniqueFieldValueConstraintViolationException.class)
    public void testName() {
       Branch b1 = new Branch("tetsname","Test 234","06:00-17:00","098144658");
       Branch b2 = new Branch("tetsname","Test 234","06:00-17:00","098144658");
       db.store(b1);
       db.store(b2);
       db.commit();
     }
com.db4o.constraints.UniqueFieldValueConstraintViolationException: class: dataModel.Branch field: pNumber     at

我怎样才能避免这种行为呢?

共有1个答案

宓昂雄
2023-03-14

从堆栈跟踪中,您可以看到此异常不是在testName()方法中抛出的:它是由tests.BranchTests.Cleanup抛出的,这可能是在您的实际测试之前或之后运行的一个单独的方法。

JUnit的expected不会覆盖这些阶段期间引发的异常。要么确保这些故障不在这里发生,要么捕捉并忽略它们。

 类似资料:
  • 我在StackOverflow中搜索了相同类型的问题,并检查了每个响应,但仍然面临这个问题。我正在测试从名为readStream()的方法抛出的IOException,该方法确实抛出了IOException,但Junit使用AssertionException使测试失败。 下面是我的单元测试: 如您所见,我已经尝试让原始类中的异常实际抛出异常,而不是仅仅捕获并打印堆栈跟踪: 我还尝试使用注释@te

  • java.lang.AssertionError:预期测试将在org.junit.Assert.Fail(Assert.java:88)在org.junit.rules.ExpectedException.FailduetOmissingException(ExpectedException.java:263)在org.junit.rules.ExpectedException.Access$20

  • 我正在使用Jenkins进行自动化测试。我的作业运行windows可执行批处理每天早上8:00归档,并向所有定义的收件人发送和通知。我有大约15个测试用例,都通过了。TestNG结果如下: 我交叉检查了詹金的所有配置。一切都如预期的那样,我的构建仍然失败,我每次都会得到这个报告: '控制台输出 由工作区F:\Automation\MovingWalls中的计时器构建启动未触发任何电子邮件。[Mov

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

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