5

EasyMockまたはUnitilsMock(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またはUnitilsMockでそのようなことを行うことができますか?easymockでは、テストからの注入をサポートするために、CUTに別のセッターメソッドが必要です。私は正しいですか、それとも方向注入はどういうわけか可能ですか?

-ありがとう

4

4 に答える 4

6

このスレッドは機能しなくなった可能性がありますが、EasyMock3.2をタグ@TestSubject、@ Mockで使用し、@ RunWith(EasyMockRunner.class)でテストを実行することでこれを実行できます。このよく書かれた(私ではありません!)例を参照してください:

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

于 2014-03-21T16:17:31.827 に答える
5

EasyMockでこれを実行できるアノテーションはわかりませんが、SpringにはReflectionTestUtilsがあり、setterメソッドを必要とせずにプライベートフィールドに簡単に挿入できます。Mockitoに切り替える前は、このクラスは非常に貴重でした。

于 2012-02-06T18:49:49.087 に答える
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"); 
    }
}
于 2012-07-13T18:36:20.470 に答える
1

以下は、@Mockで作成されたモックをフィールドに挿入するのに役立ちます。

EasyMockSupport.injectMocks(cut);

ここでcutは、モックを注入するオブジェクトです。詳細については、以下のリンク http://easymock.org/api/org/easymock/EasyMockSupport.html#injectMocks-java.lang.Object-を参照してください。

于 2017-06-27T10:03:01.897 に答える