【问题标题】:Get values of a failed test in Maven Surefire Plugin在 Maven Surefire 插件中获取失败测试的值
【发布时间】:2018-05-15 20:46:15
【问题描述】:

我习惯于使用 boost 测试,当测试失败时,它会显示正在比较的两个值,例如:

test": check 0.99999608 == discountFactor1.getDiscountFactor() has failed [0.99999607999999995 != 0.99999608334867351].

现在在 Java 中,我使用的是 Maven Surefire,当测试失败时,它会告诉代码的位置在哪里调用测试,例如:

java.lang.AssertionError
...
testSendRequest(sendRequestTest.java:295)

在这个位置我有一个测试的调用:

295 Assert.assertTrue(HHH.getSequenceNumber() == sequenceNumber);

如果测试失败,有什么方法可以知道 HHH.getSequenceNumber() 和 sequenceNumber 的值吗?

【问题讨论】:

    标签: java maven unit-testing maven-surefire-plugin


    【解决方案1】:

    实际消息可能由您的 IDE 提供,超出了单元测试框架的功能:

    test": 检查 0.99999608 == discountFactor1.getDiscountFactor() 有 失败 [0.99999607999999995 != 0.99999608334867351]。

    要使用 Maven 实现类似的操作,您可以使用重载的 assertTrue() 方法,在输出中添加与失败相关的文本消息:

    Assert.assertTrue(String msg, boolean condition)
    

    你可以这样写:

    Assert.assertTrue(HHH.getSequenceNumber() + " is not equals to " + 
                     sequenceNumber, 
                     HHH.getSequenceNumber() == sequenceNumber);
    

    但实际上我认为您应该使用Assert.assertEquals(),以便在测试失败的情况下提供比较两个对象的消息。
    你可以这样写:

    Assert.assertEquals(HHH.getSequenceNumber(), sequenceNumber);
    

    【讨论】:

      最近更新 更多