AssertJ утверждает, что List ‹Long› содержит только длинные []

Есть ли способ утверждать, что список содержит только / точно массив long []?

Код:

 // arrange
    long[] result = {1, 2, 3, 4, 5};

    // act
    List<Long> digitPowNumbers = SumDigPower.findDigitPowNumbers(1, 6);

    // assert
    assertThat(digitPowNumbers).containsExactly(result);
}

Я получаю Cannot resolve method containsExactly(long[]). Как я могу сделать это утверждение? Есть ли способ не набирать 1, 2, 3, 4, 5 в containsExactly?


person ohwelppp    schedule 13.02.2017    source источник


Ответы (1)


containsExactly() ожидает массив того же типа элемента, что и ваш список, то есть Long, а не примитив long. Измените тип массива, и он должен работать:

Long[] result = {1L, 2L, 3L, 4L, 5L};
person shmosel    schedule 13.02.2017
comment
Я получаю несовместимые типы (требуется Long Found int) в массиве. Нужно ли мне добавлять L к целым числам, чтобы это работало? - person ohwelppp; 14.02.2017
comment
Это единственный способ? У меня довольно много массивов и будет очень утомительно добавлять везде Ls - person ohwelppp; 14.02.2017
comment
@doublemc Вы также можете написать собственный сопоставитель. - person Tom; 14.02.2017
comment
@doublemc Если вы используете Guava, вы можете сделать List<Long> result = Longs.asList(1, 2, 3, 4, 5); и сравнить их, используя equals(). С Apache Commons вы можете делать Long[] result = Array.toObject(new long[] {1, 2, 3, 4, 5});. В противном случае у меня нет простого обходного пути. - person shmosel; 14.02.2017
comment
С Java8 вы можете преобразовать ваш long array в List<Long> через Arrays.stream(result).mapToObj(Long::valueOf).collect(Collectors.toList()); без использования какой-либо дополнительной библиотеки. - person Florian Schaetz; 14.02.2017
comment
Вероятно, вы можете использовать какое-нибудь регулярное выражение для замены number, на numberL,. - person Joel Costigliola; 15.02.2017