Как проверить метод void с инструментами тестирования Junit?
Мне просто удалось реализовать метод void followlink(obj page,obj link)
, который просто добавляет страницу и ссылку на очередь. Я безуспешно пытался проверить этот метод.
Все, что я хочу, это проверить, что в очереди содержит страницу и ссылку, полученные из метода followlink. Мой тестовый класс уже расширяет TestCase. Итак, что лучший способ проверить такой метод?
Ответы
Ответ 1
JUnit FAQ содержит раздел о методах тестирования, которые возвращают void
. В вашем случае вы хотите протестировать побочный эффект метода.
Пример, заданный в тестах FAQ, которые изменяют размер Collection
после добавления элемента.
@Test
public void testCollectionAdd() {
Collection collection = new ArrayList();
assertEquals(0, collection.size());
collection.add("itemA");
assertEquals(1, collection.size());
collection.add("itemB");
assertEquals(2, collection.size());
}
Ответ 2
Вы можете проверить размер, если очередь до и после вызова метода, например:
int size = queue.length();
followLink(page, link);
assertEquals(size+1, queue.length()); // or maybe size+2?
другое, что вы можете сделать, это начать с пустой очереди, вызвать followLink, а затем удалить первый элемент и проверить его значения.
Ответ 3
Скорее всего, ваша очередь закрыта, поэтому проверка размера не будет работать. Решение "дизайн для тестирования", которое я видел, заключается в том, чтобы вместо этого использовать пакетные частные методы и элементы. Поскольку ваши тесты на юниты, вероятно, будут в одном пакете, у них будет доступ.
Это само по себе позволяет работать с тестом queue.length() ".
Но я бы пошел дальше: действительно, вы должны рассмотреть возможность проверки того, что ваш метод вставил правильную страницу и ссылку на вашу очередь. Подробности для этого требуют больше знаний о том, как вы представляете (и объединяете) страницу и ссылку.
Решение jMock тоже очень хорошо, хотя, по правде говоря, я гораздо больше знаком с написанием собственных тестовых жгутов.
Ответ 4
Итак - проверьте после вызова метода очередь, если значения, переданные методу, добавляются в очередь. Вам нужен доступ к очереди (что-то вроде getQueue()) для этого.
Ответ 5
Использовать библиотеку jMock и издеваться над хранилищем, в котором находится ваша очередь, jMock позволяет утверждать, был ли вызван метод издевательства и с какими параметрами.
Ответ 6
У нас есть два способа проверить следующее:
-
Проверьте размер Queue/Collection, как в приведенной ниже программе:
(Как отметил Патрик)
@Test
public void testfollowlinkAdd() {
int size = queue.length();
queue.add(pageLink); //Considering an Object of PageLink
Assert.assertTrue(size+1, queue.length());
}
ИЛИ
- Использовать MockObjects. Ракурсы, такие как Mockito, могут быть полезны здесь.