【问题标题】:Junit 5 Coverage testing 1 of 4 branches missingJunit 5 覆盖测试缺少 4 个分支中的 1 个
【发布时间】:2021-12-16 03:09:14
【问题描述】:

我的测试显示缺少 4 个分支中的 1 个,我不知道为什么。

public Classification classify() {
    if (points >= 1 && points <= 4) {
        return Classification.First;
    }

我运行的测试:

 @Test
    void Test1() {
        int p = 3;
        Grade grade = new Grade(p);
        assertEquals(grade.classify(), Classification.First);

    }


@Test
    void Test2() {
        int p = 6;
        Grade grade = new Grade(p);
        assertNotEquals(grade.classify(), Classification.First);

    }

if (points &gt;= 1 &amp;&amp; points &lt;= 4) { 上显示了 1/4 的分支覆盖率

目前还不确定我缺少哪个分支。有什么建议吗?

【问题讨论】:

    标签: testing junit junit5


    【解决方案1】:

    简短回答:您也应该使用p &lt; 1 进行测试,例如使用p = 0

    长答案:在测试此类内容时,您应该始终测试边界内、边界外,在这种情况下还包括边界值。实际上,覆盖范围甚至没有告诉您包含限制的缺失案例。

    您的案例points &gt;= 1 &amp;&amp; points &lt;= 4会有以下案例:

    1. 点 = 1
    2. 1
    3. 点 = 4
    4. 点 > 4

    案例 2、3、4 在覆盖范围内被视为与 分支 相同,但作为要求,它们实际上并不相同。我们可能会从实现中看到(如果是白盒测试),如果仅在 (2,3) 值 1 &lt;= points &lt;= 4 之间的 evlaue 上进行测试,应该不会有问题,但如果我们不知道实现(黑盒测试),则可能会有.再说一次,即使知道实现,测试限制仍然是一个好主意,因为实现可能会在以后发生变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      • 2016-12-07
      • 2019-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多