EasyMock或Unitils Mock(非Unitils支持的EasyMock)中是否有任何技术可以将模拟直接注入到被测试类中?
例如。在Mockito中,可以将mocks直接注入类的成员变量
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中使用单独的setter方法来支持测试中的注入。我是对的还是方向注射在某种程度上是可能的?
-Thanks
答案 0 :(得分:6)
我不知道任何注释可以让你用EasyMock做到这一点,但是,Spring有ReflectionTestUtils,它可以让你轻松地对私有字段进行注入而无需setter方法。在我切换到Mockito之前,我发现这个课程非常宝贵。
答案 1 :(得分:3)
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");
}
}
答案 2 :(得分:3)
也许这个帖子已经死了但是你现在可以使用带有@TestSubject,@Mock标签的EasyMock 3.2并使用@RunWith(EasyMockRunner.class)运行测试。看得好(不是我!)示例:
http://henritremblay.blogspot.ie/2013/07/easymock-32-is-out.html
答案 3 :(得分:0)
以下内容将有助于在其字段中注入使用@Mock创建的模拟。
EasyMockSupport.injectMocks(剪切);
这里cut是注入mock的对象。有关更多信息,请参阅以下链接 http://easymock.org/api/org/easymock/EasyMockSupport.html#injectMocks-java.lang.Object-