Целое число может быть примитивным, но assertTrue становится неоднозначным - как удовлетворить оба требования? - PullRequest
0 голосов
/ 25 октября 2019

У меня есть простой кусок кода, тестирующий репозиторий Spring:

//repository is declared in code, doesn't really matter

@Test
public void objectTest() {
    Integer testId = 10;
    TestedObject testObj = repository.getTestedObject(testId);
    assertNotNull(testObj);
    assertEquals(testId, testObj.getId()); //testObj.getId() is an Integer, not int
}

Этот код дает мне предупреждение о testId, которое может быть примитивным .

Когда я изменяю testId на примитив, появляется ошибка неоднозначности, поскольку assertEquals(testId, testObj.getId()) может соответствовать как assertEquals(Object, Object), так и assertEquals(int, int) из-за функции автобокса Java.

Я ненавижу незафиксированныйпредупреждения, и я хотел бы избавиться от них. Предупреждение о том, что testId не является примитивным появляется только в IntelliJ IDEA , Eclipse даже не волнует.

Должен ли я:

  • приводить переменную? assertEquals((Integer) testId, testObj.getId())
  • настроить серьезность предупреждения в IDEA?

Кроме того, я хотел бы оставить Integer в getId() методе testObj, в случае любого объекта -связанные манипуляции, которые нельзя сделать с примитивами.

1 Ответ

1 голос
/ 28 октября 2019

Ответ: это ошибка. Спасибо @ Bas Leijdekkers за создание отчета об ошибках в JetBrains. (ссылка здесь , скопировано из комментариев).

В конце концов, я использовал предложение @ deHaar и выбрал метод intValue().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...