2009-10-28 5 views

ответ

2

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

11

Попробуйте Mockito и вы будете любить его!

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

Тот же пример, что и выше, но для 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); 
} 
+0

Это мой первый опыт, видящий Mockito ... очень аккуратный. Благодаря! –

3

Там целый ряд насмешливых библиотек для Java:

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

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

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

+0

Да, моя компания немного отстает от развития технологий. Я надеюсь, что они обновят это приложение, которое я поддерживаю в ближайшее время. – zfranciscus

1

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

+1

Ну, на данный момент мы находимся в состоянии поддержания приложения, которое написано недостаточно.Некоторые из классов имеют очень большие частные методы, требующие серьезного рефакторинга. В рамках этих усилий мы пытаемся сделать хороший модульный тест вокруг частных методов, а затем медленно прокладываем себе путь для реорганизации этих методов. – zfranciscus

+0

Я до сих пор не думаю, что насмешливые частные методы - хорошая идея, есть и другая техника. Я предполагаю, что у вас есть книга Персов по работе с устаревшим кодом? –

Смежные вопросы