在 jUnit5 中测试数组长度

Testing array length in jUnit5

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

private Number[] number;

这是我的测试,用于检查我的数组长度是否为 3

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

     assertTrue(number == 3);
}

我真的不知道怎么解决这个问题所以你们能帮帮我吗...

可能的解决方案之一。

@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[] 的 class 初始化数组。

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

为什么要做这种检查? 如果您在测试中初始化 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
    }
}
import static org.assertj.core.api.Assertions.assertThat;

    @Test
    void arrayHasALengthOf3(){
        Number[] number = new Number[3];
        assertThat(number).hasSize(3);
    }