【问题标题】:Testing array length in jUnit5在 jUnit5 中测试数组长度
【发布时间】:2021-03-16 20:13:05
【问题描述】:

我有这个问题,我必须测试一个数组的长度是否为 3。

private Number[] number;

这是我的测试来检查我的数组的长度是否为 3

@Test
void arrayHasALengthOf3(){
     Number[] number;

     assertTrue(number == 3);
}

我真的不知道我该如何解决这个问题,所以你们能帮帮我吗...

【问题讨论】:

  • number 没有被初始化,所以它不会有长度 3。你也可以使用 number.length() 来获得长度。我想使用 IDE 并检查它对您的代码的看法将是寻找解决方案的良好开端。

标签: java testing junit


【解决方案1】:

为什么要进行这种检查? 如果您在测试中初始化 Number[] number = Number[3] 数组,则没有必要断言长度,因为它的长度始终为 3(除非您在最不应该做的方式上重新分配变量)。 如果您想检查数组中有多少非空值或检查它是否包含预期值,情况会有所不同:

public class NumbersTest {
    @Test
    void test() {
        Number[] numbers = new Number[]{1, 2, null};

        long count = Arrays.stream(numbers).filter(Objects::nonNull).count();
        Assertions.assertEquals(2, count);
        Assertions.assertTrue(numbers.length == 3); //this will be always true unless you reassign numbers variable
        Assertions.assertArrayEquals(numbers, new Number[] {1, 2, null}); //check if contains expected values
    }
}

【讨论】:

    【解决方案2】:

    可能的解决方案之一。

    @Test
    void arrayHasALengthOf3() {
       final int EXPECTED_LENGTH = 3;
       Number[] number = new Number[EXPECTED_LENGTH]; // you need to initialize it.
    
       // Use number.length to get the length of the array.
       assertEquals(number.length, EXPECTED_LENGTH);
    }
    

    您可以使用包含Number[] 的类来初始化数组。

    您的主要问题是您如何定义数组以及如何检查长度

    【讨论】:

      【解决方案3】:
      import static org.assertj.core.api.Assertions.assertThat;
      
          @Test
          void arrayHasALengthOf3(){
              Number[] number = new Number[3];
              assertThat(number).hasSize(3);
          }
      

      【讨论】:

        猜你喜欢
        • 2015-05-23
        • 1970-01-01
        • 2019-01-23
        • 1970-01-01
        • 1970-01-01
        • 2019-10-14
        • 1970-01-01
        • 2021-04-20
        • 1970-01-01
        相关资源
        最近更新 更多