EasyMock и Unitils эквивалентны Mockito @ InjectMocks

Существуют ли какие-либо методы, доступные в EasyMock или Unitils Mock (Unitils не поддерживает EasyMock) для внедрения макетов непосредственно в тестируемый класс?

Например. в Mockito можно вводить макеты непосредственно в переменные-члены класса,

public class TimeTrackerTest {
    @InjectMocks   // Used to create an instance the CUT
    private TimeTrackerBean cut;
    @Mock  // Used to create a Mock instance
    EntityManager em;
    @Before
    public void injectMockEntityManager() {
        MockitoAnnotations.initMocks(this);   // Injects Mocks into CUT
    }
    @Test
    ...
}

Можно ли сделать такие вещи с помощью EasyMock или Unitils Mock? В easymock нам нужен отдельный метод установки в CUT для поддержки инъекции из тестов. Я прав или направленный впрыск как-то возможен?

-Спасибо


person Bala    schedule 06.02.2012    source источник


Ответы (4)


Я не знаю никаких аннотаций, которые позволили бы вам сделать это с помощью EasyMock, однако в Spring есть ReflectionTestUtils, который позволит вам легко выполнять инъекции в частные поля, не требуя метода установки. Прежде чем я перешел на Mockito, я нашел этот класс бесценным.

person jhericks    schedule 06.02.2012

Возможно, эта ветка устарела, но теперь вы можете сделать это с помощью EasyMock 3.2 с тегами @TestSubject, @Mock и запустить тест с помощью @RunWith(EasyMockRunner.class). См. этот хорошо написанный (не мной!) пример:

http://henritremblay.blogspot.ie/2013/07/easymock-32-is-out.html

person user2298491    schedule 21.03.2014

В Unitils есть модуль Inject для внедрения фиктивных объектов в тестируемые объекты. Подробнее см. на http://unitils.org/tutorial-inject.html.

Например:

public class MyServiceTest extends UnitilsJUnit4
{ 
    @TestedObject MyService myService; 
    @InjectIntoByType Mock<MyDao> myDao; 

    @Test
    public void myTestMethod()
    {
        myDao.returns("something").getSomething(); 

        myService.doService();

        myDao.assertInvoked().storeSomething("something"); 
    }
}
person Rogério    schedule 13.07.2012

Следующее поможет внедрить макеты, созданные с помощью @Mock, в его поля.

EasyMockSupport.injectMocks(cut);

Здесь cut — это объект, на который можно вводить макеты. Для получения дополнительной информации см. ссылку ниже http://easymock.org/api/org/easymock/EasyMockSupport.html#injectMocks-java.lang.Object-

person Mohana Subramaniam    schedule 27.06.2017