Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 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());
    }
    

ИЛИ

  1. Использовать MockObjects. Ракурсы, такие как Mockito, могут быть полезны здесь.