0

私たちのテストでは、動作がわずかに異なるモック オブジェクトがあります。デフォルトの動作を新しいデフォルトの動作でオーバーライドできるとよいので、テストごとに明示的に異なる動作を定義するだけで済みます。現在、ユニティルを使用していますが、Java モッキング フレームワークでの問題の解決策を探しています。

問題の図 (unitils を使用):

Mock<MyClass> myMock1 = new MockObject<>(MyClass.class,myTestedObject);
myMock1.returns(1).getAnInteger();
myMock1.returns("Hello").getAString();
myMock1.returns(true).getABoolean();
myMock1.returns(3.14).getADouble();

Mock<MyClass> myMock2 = new MockObject<>(MyClass.class,myTestedObject);
myMock2.returns(2).getAnInteger();
myMock2.returns("Hello").getAString();
myMock2.returns(false).getABoolean();
myMock2.returns(3.14).getADouble();

私たちが探しているのは、次のようなものです。

MockObjectFactory<MyClass> myMockObjectFactory = new MockObjectFactory<>(MyClass.class);
myMockObjectFactory.defaultReturns(1).getAnInteger();
myMockObjectFactory.defaultReturns("Hello").getAString();
myMockObjectFactory.defaultReturns(false).getABoolean();
myMockObjectFactory.defaultReturns(3.14).getADouble();

Mock<MyClass> myMock1 = myMockObjectFactory.createMockObject(myTestedObject);
myMock1.returns(true).getABoolean();

Mock<MyClass> myMock2 = myMockObjectFactory.createMockObject(myTestedObject);
myMock2.returns(2).getAnInteger();

デフォルトの動作を新しいデフォルトの動作でオーバーライドすることをサポートする現在の Java モッキング フレームワークを知っていますか?

4

1 に答える 1

1

いわゆる mockitoのスパイまたはJMockitの動的(部分的)モッキングを見てください

于 2013-10-25T12:21:15.493 に答える