JUnit Возвращает int значение - PullRequest
       26

JUnit Возвращает int значение

0 голосов
/ 21 декабря 2009

Мой тест Junit должен проверить, что возвращаемое число совпадает с размером списка

если бы мой тест был следующим, было бы это правильно закодировано, я чувствую, что это не так, потому что последние 2 строки всегда будут верными?

public void testGetTotalPilots() {
    ArrayList<Pilot> list = new ArrayList<Pilot>();
    int size = list.size();

    assert size == list.size();
}

Ответы [ 5 ]

3 голосов
/ 21 декабря 2009

assert - это функция языка Java, не используемая в тестах. Он оценивается только с параметром времени выполнения -ea! Без этой опции ваш код ничего не тестирует! Пожалуйста, используйте методы junit.framework.Assert, такие как assertEquals().

С другой стороны, я не уверен, что ваш тест должен проверить. list.size () всегда является list.size (). Вы должны утвердить номер. Также вам не нужно тестировать ArrayList - он работает. Где ваш код для тестирования?

3 голосов
/ 21 декабря 2009

Вы можете проверить, например, является ли список пустым (размер == 0) при создании списка:

ArrayList<Pilot> list = new ArrayList<Pilot>();
assertEquals(0, list.size()); 
// or: assertTrue(list.isEmpty());

И / или вы можете добавить некоторые записи в список и проверить, правильно ли установлен размер списка:

list.add(pilot1);
list.add(pilot2);
assertEquals(2, list.size());

Edit:

При модульном тестировании списка (ArrayList) вы должны подумать о том, как этот список можно использовать (тестовые сценарии). Например,

  • при создании списка он должен быть пустым
  • когда элемент добавляется в пустой список, его размер должен быть один (впоследствии)
  • когда список содержит один элемент, удаление этого элемента должно привести к пустому списку
  • и так далее ...
1 голос
/ 21 декабря 2009

Конечно, ваш тест должен сначала что-то сделать, то есть запустить код, который вы тестируете, чтобы заполнить объекты ArrayList of Pilot? Таким образом, вы должны написать свой тест следующим образом:

public void testGetTotalPilots()
{
    ArrayList<Pilot> list = new ArrayList<Pilot>();
    // Invoke the code that populates the Pilot list
    int size = 3;    // Set this to the expected number

    assertEquals(size, list.size());
}

… иначе вы просто ничего не тестируете.

0 голосов
/ 21 декабря 2009

То, что вы тестируете здесь, это ArrayList. Зачем? Я не думаю, что особенно полезно тратить время на тестирование основных функций классов, которые поставляются с Java и которые широко используются.

Глядя на название теста, этот тест должен скорее получить список откуда-то еще, а затем проверить предположения о списке пилотов. Что-то вроде

List<Pilot> pilots = pilotDao.getAll();
assert pilots.size() == 0;

Pilot newPilot = new Pilot();
pilotDao.addPilot(newPilot );

pilots = pilotDao.getAll();
assert pilots.size() == 1;
assert pilots.get(0).equals(newPilot);

Или, как я уже говорил в вашем другом посте, сделайте это; Список пилотов = pilotDao.getAll (); pilots.add (новый пилот) и затем проверьте, происходит ли правильная реакция на это, то есть выдается исключение, если вы не хотите, чтобы люди изменяли список, или последующий вызов pilotDao.getAll(); возвращает список размера 1.

0 голосов
/ 21 декабря 2009

Я бы не сказал, что вы тестируете правильно.

public void testGetTotalPilots() {
    ArrayList<Pilot> list = new ArrayList<Pilot>();
    int size = 0;

    assert size == list.size();
}

Изменение, приведенное выше, гарантирует, что ваш тест всегда будет нулевым, так как это соответствует ожидаемому результату. Если он не равен нулю, тест не пройден.

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