Как проверить метод void с инструментами тестирования Junit?

Мне просто удалось реализовать метод void followlink(obj page,obj link) которая просто добавляет страницу и ссылку на очередь. Я безуспешно пытался проверить этот метод.

Все, что я хочу, это проверить, что в очереди содержит страницу и ссылку, полученные из метода followlink. Мой тестовый class уже расширяет TestCase. Итак, что лучший способ проверить такой метод?

В 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 позволяет утверждать, был ли вызван метод издевательства и с какими параметрами.

У нас есть два способа проверить следующее:

  1. Проверьте размер Queue / Collection, как в приведенной ниже программе: (Как отметил Патрик)

     @Test public void testfollowlinkAdd() { int size = queue.length(); queue.add(pageLink); //Considering an Object of PageLink Assert.assertTrue(size+1, queue.length()); } 

ИЛИ

  1. Используйте MockObjects. Ракурсы, такие как Mockito, могут быть полезны здесь.
  • Какой лучший (более чистый) способ игнорировать вывод в PowerShell?
  • Лучше ли использовать аргументы void void foo (void) "или нет" void foo () "?
  • что означает преобразовать int в void * или наоборот?
  • Что означает `public static void main args`?
  • Interesting Posts
    Давайте будем гением компьютера.