1

mockito verifyメソッドはコレクションの同じインスタンスと一致しますか、それともコレクションの要素を検証しますか?Page#equals()メソッドにブレークポイントを設定しても、イベントがヒットすることはありません。Page#ha​​shCode()のみが行います。Mockitoが同じ要素を持っているときにSetの2つの実装が等しいと見なさない理由はありますか?

Set<Page> pagesToRemove = Sets.newHashSet();
// add a few pages
Set<Page> copy = ImmutableSet.copyOf(pagesToRemove)
pageManager.removePages(copy);
verify(pageManager, new Times(1)).removePages(pagesToRemove);

PageのEqualsメソッドとHashCodesメソッドには、Objectから継承されたデフォルトの実装があります。

引数が違います!募集:pageManager.removePages((HashSet)[{pageId:null; parentId:null; firstChild:null; nextSibling:null}など...]); -> at com.fg.edee.integration.service.PageServiceTest.testRemove(PageServiceTest.java:60)実際の呼び出しにはさまざまな引数があります:pageManager.removePages((RegularImmutableSet)[{pageId:null; parentId:null; firstChild:null; nextSibling:null}など。]);

4

2 に答える 2

0

私はいくつかのテストを書き、それが単なる HashSet の hashCode であることがわかりました。私が言ったように、私はネイティブの Object#hashCode と を使用していました:

主な制限は、標準の Java 実装では、ハッシュ コードがオブジェクトを一意に識別しないことです。それらは単に一致する項目の選択肢を絞り込むだけですが、通常の使用では、複数のオブジェクトが同じハッシュ コードを共有する可能性が高いと予想されます。

ネイティブの Object#hachCode() メソッドは実行内で常に同じ整数を返すため、これは誤解を招く可能性があります。

于 2013-01-07T08:26:36.083 に答える
0

参照型のオブジェクトを引数としてメソッド呼び出しを検証するときに、ArgumentMatcher を使用できます。ここを参照してください。

于 2013-01-07T09:04:47.293 に答える