JMock を使用して素敵なモックを作成する最良の方法はありますか?
例えば:
public interface Dependency {
    void someSetUp();
    void interactionUnderTest();
    void someCleaningAfterWork();
}
public class CUT {
    private Dependency dependency;
    public void methodUnderTest() {
        dependency.someSetUp();
        dependency.interactionUnderTest();
        dependency.someCleaningAfterWork();
    }
    public void setDepencency(Dependency dependency) {
        this.dependency = dependency;
    }
}
Mockito の場合、ソリューションは簡単です。
@Test
public void mockitoExample() throws Exception {
    Dependency dependency = mock(Dependency.class);
    classUnderTest.setDepencency(dependency);
    classUnderTest.methodUnderTest();
    verify(dependency).interactionUnderTest();
}
しかし、JMockの場合、私はこの解決策しか見つけませんでした:
@Test
public void jMockExample() throws Exception {
    JUnit4Mockery ctx = new JUnit4Mockery();
    final Dependency dependency = ctx.mock(Dependency.class);
    classUnderTest.setDepencency(dependency);
    ctx.checking(new Expectations() {{
        allowing(dependency).someSetUp();
        one(dependency).interactionUnderTest();
        allowing(dependency).someCleaningAfterWork();
    }});
    classUnderTest.methodUnderTest();
}
問題は次の行にあります。
allowing(dependency).someSetUp();
and
allowing(dependency).someCleaningAfterWork();
Dependency から別のメソッドを呼び出すなどして methodUnderTest が変更された場合、JMock を使用する場合はテストを手動で変更する必要があります。それを回避する方法はありますか?
PS私の英語について申し訳ありません