2017-10-26 10 views
0

Easymockで問題が発生しています。ここではいくつかのvoid呼び出しを期待しています。しかし、私はモックが失敗するようにするには問題があります。EasyMock 3.5で複数のvoidメソッドを使用する場合

私はpersistConfiguration(Map)への呼び出しを期待しています。私は絶対に呼び出されていないと確信しています。しかし、テストはすべて同じことをパスします。

私の嘲笑インタフェースは次のようになります。

public abstract class MyMockedClass{ 
    public abstract void start() throws Exception; 
    public abstract void stop() throws Exception; 
    public abstract void persistConfiguration(Map<String, Object> newConfiguration) throws Exception; 
} 

私は期待provider.start()を削除し、マッチングgetLastCallコールテストはメッセージ

で失敗した場合、テストはこの

@RunWith(EasyMockRunner.class) 
public class MyFailingTest{ 
@Mock 
private MyMockedClass provider; 
.... 
    @Before 
    public void setUp() throws Exception{ 
     Map<String, Object> expectedSetConfig = new HashMap<>(); 
     expectedSetConfig.put("String", setString); 
     expectedSetConfig.put("File", testFile2.getCanonicalPath()); 

     /*Expect*/provider.start(); 
     expectLastCall().atLeastOnce(); 
     /*Expect*/provider.persistConfiguration(expectedSetConfig); 
     expectLastCall().times(1); 
     /*Expect*/provider.stop(); 
     expectLastCall().atLeastOnce(); 

     replay(provider); 
    } 

} 

のように見えます

予期しないメソッド呼び出しMyMockedClass.start(): MyMockedClass.persistConfiguration({列= NEWSTRING、ファイル= C:\ワークスペース\ MEH \もの}):期待:1、実際:0 MyMockedClass.stop():期待される:少なくとも1、実際:0

したがって、テストCANは失敗しますが、私の質問は:startstop、またはpersistConfigurationのいずれかのメソッドが呼び出された場合、テストを失敗させるにはどうすればよいですか? persistConfigurationメソッドは、それらの特定の値を含むマップ以外のもので呼び出された場合、失敗します。

答えて

0

問題が見つかりました。

テストの後にverify(provider)に電話するのを忘れました。

のみ、その呼び出しを期待するモックを伝え

/*Expect*/provider.start(); 
expectLastCall().atLeastOnce(); 

を設定します。お電話をされない限り.atLeastOnce()の部分は実際にはチェックされませんverify

関連する問題