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