Как проверить метод void с инструментами тестирования Junit?
Мне просто удалось реализовать метод void followlink(obj page,obj link)
которая просто добавляет страницу и ссылку на очередь. Я безуспешно пытался проверить этот метод.
Все, что я хочу, это проверить, что в очереди содержит страницу и ссылку, полученные из метода followlink. Мой тестовый class уже расширяет TestCase. Итак, что лучший способ проверить такой метод?
- Что означает «Ошибка: Несовместимые типы: void не может быть преобразован в ...» означает?
- Что такое System.Void?
- Понимание разницы между f () и f (void) в C и C ++ раз и навсегда
- в c: func (void) vs. func ()
- В чем разница между java.lang.Void и void?
- Что делает пустота в java?
- является f (void), устаревшим в современных C и C ++
- Возrotation пустоты?
- Разница между int main () и int main (void)?
- Может ли кто-нибудь объяснить тип возврата void на Java?
- Что делает ключевое слово return в методе void в Java?
- int main () vs void main () в C
- Используется для ссылочного типа Java Void?
В FAQ JUnit есть раздел о методах тестирования, которые возвращают 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()); }
Вы можете проверить размер, если очередь до и после вызова метода, например:
int size = queue.length(); followLink(page, link); assertEquals(size+1, queue.length()); // or maybe size+2?
другое, что вы можете сделать, это начать с пустой очереди, вызвать followLink, а затем удалить первый элемент и проверить его значения.
Скорее всего, ваша очередь является частной , поэтому проверка размера не будет работать. Решение «дизайн для тестирования», которое я видел, заключается в том, чтобы вместо этого использовать частные методы и элементы пакета . Поскольку ваши тесты на юниты, вероятно, будут в одном пакете, у них будет доступ.
Это само по себе позволяет протестировать побочный эффект « queue.length () ».
Но я бы пошел дальше: действительно, вы должны рассмотреть возможность проверки того, что ваш метод вставил правильную страницу и связался с вашей очередью. Подробности для этого требуют больше знаний о том, как вы представляете (и объединяете) страницу и ссылку.
Решение jMock тоже очень хорошо, хотя на самом деле я гораздо более знаком с написанием собственных тестовых жгутов.
Итак – проверьте после вызова метода очередь, если значения, переданные методу, добавляются в очередь. Для этого вам нужен доступ к очереди (что-то вроде getQueue ()).
Используйте библиотеку jMock и издевайтесь над хранилищем, в котором находится ваша очередь, jMock позволяет утверждать, был ли вызван метод издевательства и с какими параметрами.
У нас есть два способа проверить следующее:
-
Проверьте размер 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, могут быть полезны здесь.