EasyMock и Unitils эквивалентны Mockito @ InjectMocks - PullRequest
5 голосов
/ 06 февраля 2012

Существуют ли какие-либо методы в 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 для поддержки инъекций из тестов. Я прав или направление инъекций как-то возможно?

-Спасибо

Ответы [ 4 ]

5 голосов
/ 06 февраля 2012

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

4 голосов
/ 21 марта 2014

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

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

3 голосов
/ 13 июля 2012

Unitils имеет модуль «Впрыск» для инжекции фиктивных объектов в тестируемые объекты.Подробнее см. 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"); 
    }
}
1 голос
/ 27 июня 2017

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

EasyMockSupport.injectMocks (вырезать);

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

...