私は、次のインタフェースがあります。私はそれだけで、例えば、特定のタイプのとString
をリストを受信することをテストで確認したいMockito - リストマッチャーでリストタイプを制限する方法は?
public interface ListHandler {
public boolean add(List<?> list, Object element);
}
いるが。私は次のテストをコード化しました:
@Test
public void testAddOnlyString() {
boolean actual = false;
when(this.listHandlerMock.add(
Matchers.anyListOf(String.class),
Matchers.anyString()
)).thenReturn(true);
actual = this.listHandlerMock.add(new ArrayList<Integer>(), 1);
assertTrue(actual);
verify(this.listHandlerMock).add(
Matchers.anyListOf(String.class),
Matchers.anyString()
);
}
しかし、テストは正しく行われます。
ジェネリック型消去のため、実行時にジェネリック型を認識できません。 'anyListOf'マッチャーは、リストのすべての要素がこの型であることをチェックしていますが、リストは空であるため、決して失敗しません。とにかく、あなたはあなたが渡しているリストを知っています - なぜあなたはどのリストにもアサートしていますか? 'list = new ArrayList'と同じオブジェクトを期待する: 'sameInstance(list)' –
ところで、あなたの実際のオブジェクトはどこですか?テストがしていることはすべて、モックとやりとりすることです。ここで何をテストしていますか? –