Дразнящий Java-объект для юнит-теста - PullRequest
2 голосов
/ 28 октября 2009

Я ищу хороший фреймворк для модульных тестов, который я могу использовать для имитации частных методов, которые могут работать под JDK 1.4.2 .

Приветствия

Ответы [ 5 ]

11 голосов
/ 28 октября 2009

Попробуйте Mockito , и вам понравится!

Вы можете посмотреть эту библиотеку в этом блоге , показывающем 6 простых примеров использования Mockito.

Краткий пример:

@Test
public void iteratorWillReturnHelloWorld(){
    //arrange
    Iterator i = mock(Iterator.class);
    when(i.next()).thenReturn("Hello").thenReturn("World");
    //act
    String result = i.next() + " " + i.next();
    //assert
    assertEquals("Hello World", result);
}
<Ч />

Изменить в соответствии с вашими требованиями:

Кажется, что Mockito работает достаточно хорошо на Java 1.4 и JUnit 3, как указано в этом сообщении в блоге .

Тот же пример, что и выше, но для Java 1.4:

public void testIteratorWillReturnHelloWorld(){
    //arrange
    Iterator i = Mockito.mock(Iterator.class);
    Mockito.when(i.next()).thenReturn("Hello").thenReturn("World");
    //act
    String result = i.next() + " " + i.next();
    //assert
    assertEquals("Hello World", result);
}
3 голосов
/ 28 октября 2009

Для Java доступен целый ряд библиотек насмешек:

  • EasyMock , пожалуй, самая популярная библиотека для насмешек на данный момент. Широкий спектр функций, простота использования.
  • Mockito , изначально основанный на коде EasyMock, использует аналогичные парадигмы для имитации, но автоматизирует несколько задач, таких как переключение состояний ложных объектов (, а именно запись, воспроизведение, проверка, сброс )
  • jMock , издевательство над Хамкрестом. Лично я не использовал это, но из того, что я понял, это по крайней мере прилично.

... и, скорее всего, некоторые другие менее используемые библиотеки, о которых я даже не слышал.

Поскольку ваше требование Поддержка JDK 1.4.2 , это, к сожалению, означает, что вы можете выбрать старую версию EasyMock или действительно старую версию jMock. Даже поддержка Java5 закончится через два дня ( 30 октября 2009, то есть! ), поэтому, если возможно, попробуйте выйти из эры 1.4.2 - вы ( и / или ваша компания). ) просто значительно отстают от других и не имеют серьезной технической поддержки.

2 голосов
/ 28 октября 2009

Почему бы вам не попробовать Easymock или Mockito

1 голос
/ 30 октября 2009

Никто не поднял это, но почему вы пытаетесь высмеивать частные методы? Это почти всегда плохая идея, поскольку она нарушает инкапсуляцию.

1 голос
/ 28 октября 2009

использую jUnit с jMock

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