Почему этот JUnitTest терпит неудачу? - PullRequest
0 голосов
/ 14 октября 2018
    @Test
public void testAscendingNumbers() {
    Object[][] testData = new Object[][]{
        {new int[]{1, 2, 3, 4, 5}, 4, 30},
        {new int[]{1, 2, 2, 2, 2}, 4, 0},
        {new int[]{1, 1, 1, 4, 3}, 5, 0},
        {new int[]{1, 2, 4, 3, 1}, 4, 30},
        {new int[]{2, 3, 4, 6, 1}, 5, 0},
        {new int[]{1, 2, 6, 4, 5}, 4, 0},
        {new int[]{5, 4, 3, 2, 1}, 4, 30},
        {new int[]{6, 5, 3, 4, 2}, 5, 40},
        {new int[]{2, 2, 3, 4, 4}, 4, 30},
        {new int[]{2, 6, 3, 5, 3}, 4, 40}
    };

    KniffelTableModel instance = new KniffelTableModel();
    for (Object[] obj : testData) {
        System.out.println((int) obj[1]);
        System.out.println("ascendingNumbers - " + obj[1] + " in " + Arrays.toString((int[]) obj[0]));
        System.out.println("Expect: " + obj[2] + " --> got: " + instance.ascendingNumbers((int[]) obj[0], (int) obj[1]));
        assertEquals((int) obj[2], instance.ascendingNumbers((int[]) obj[0], (int) obj[1]));
    }
}

Для целей тестирования я не использую здесь параметризованные тесты, но он все равно должен работать ... Проблема в том, что ожидаемый результат совпадает с результатом функции, которую я тестирую, но этовсе еще говорят, что это не то же самое ... Я знаю, что это должно быть правильно, потому что в строке с "Ожидать" я получаю 2 равных значения ... enter image description here

1 Ответ

0 голосов
/ 14 октября 2018

Возможно, экземпляр KniffelTableModel равен с состоянием , а KniffelTableModel.ascendingNumbers() не дает равных результатов для последующих вызовов с теми же аргументами.

Или это может изменить входной массив.

Вы можете переписать тест так, чтобы KniffelTableModel.ascendingNumbers() вызывался только один раз для каждого варианта использования, то есть:

KniffelTableModel instance = new KniffelTableModel();
for (Object[] obj : testData) {
    System.out.println((int) obj[1]);
    System.out.println("ascendingNumbers - " + obj[1] + " in " + Arrays.toString((int[]) obj[0]));

    final int result = instance.ascendingNumbers((int[]) obj[0], (int) obj[1]);

    System.out.println("Expect: " + obj[2] + " --> got: " + result);
    assertEquals((int) obj[2], result);
}

Пожалуйстапроверить класс KniffelTableModel на наличие переменных состояния, таких как:

  • Неоконечные поля,
  • Не финальные статические поля,
  • Поля изменяемых-классы типов,
  • Использование нефинальной статики из других классов.

Пожалуйста, отправьте код класса KniffelTableModel, если вам нужна дополнительная помощь.

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