簡體   English   中英

EasyMock和Unitils相當於Mockito @ InjectMocks

[英]EasyMock and Unitils equivalent to Mockito @ InjectMocks

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方法來支持測試中的注入。 我是對的還是方向注射在某種程度上是可能的?

-謝謝

我不知道任何注釋可以讓你用EasyMock做到這一點,但是,Spring有ReflectionTestUtils ,它可以讓你輕松地對私有字段進行注入而無需setter方法。 在我切換到Mockito之前,我發現這個課程非常寶貴。

也許這個線程已經死了但是你現在可以使用帶有@TestSubject,@Mock標簽的EasyMock 3.2以及使用@RunWith(EasyMockRunner.class)運行測試來實現這一點。 看得好(不是我!)示例:

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

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"); 
    }
}

以下內容將有助於在其字段上注入使用@Mock創建的模擬。

EasyMockSupport.injectMocks(切口);

這里cut是注入mock的對象。有關更多信息,請參閱以下鏈接http://easymock.org/api/org/easymock/EasyMockSupport.html#injectMocks-java.lang.Object-

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM