0

現在、EasyMock を使用した単体テストで問題が発生しています。

Expectation failure on verify:
     FileConverter.convert(file, file2): expected: 1, actual: 1

これはクラスで唯一の失敗であり、以下の検証メソッドで失敗します。メッセージを Google で検索しようとしましたが、これは "expected: 1, actual: 1 (+1) "の結果のみを表示し、+1はエラーが異なることを意味します。

デモンストレーションのために、失敗する EasyMock テストの構造を単純化しようとしました。タイプミスを許してください:

@Test
public void testScan() {
  String[] testFiles = { "file", "file2" };
  FileConverter converterMock = EasyMock.createMock(FileConverter.class);
  Poller poller = new Poller(new File("testFolder"), converterMock);

  for (String testFile : testFiles) {
    converterMock.convert(new File(testFile));
    EasyMock.expectLastCall().once();
  }
  EasyMock.replay(converterMock);

  for (String testFile : testFiles) {
    poller.scan();
  }
  EasyMock.verify(converterMock);
}

コード自体は特に関連しているとは思いませんが、完全を期すために含めました。私が本当に探しているのは、EasyMock.verify メソッドのコンテキストで「期待される 1、実際の 1」が何を意味するかの説明です。

前もって感謝します!

4

3 に答える 3

1

これらのテストの実行では、エラー メッセージが非常に不明確になる場合があります。2 つの引数convertを持つメソッド呼び出しシグネチャを期待すると失敗することがわかります。Fileしたがって、テストで次の行を完成/置換して、それを期待してみてください。

converterMock.convert(new File(testFile));

次のようなもので:

File file1 = new File(testFile1);
File file2 = new File(testFile2);
converterMock.convert(testFile1, testFile2);

また、次のような特定性の低いマッチングも試してください。

converterMock.convert(EasyMock.isA(File.class), EasyMock.isA(File.class));

また

File file1 = new File(testFile1);
File file2 = new File(testFile2);
converterMock.convert(EasyMock.eq(file1), EasyMock.eq(file2));
于 2016-08-26T06:28:46.497 に答える