Katakanlah saya punya kelas seperti ini

public class Wrapper<T> {
    T data;
}

Dan saya memiliki panggilan metode seperti ini:

public interface ThingDoer {
     <T> boolean doSomething(Wrapper<T> wrapper)
}

Yang ingin saya tiru dalam ujian. Katakanlah kita semua sudah siap dengan hal-hal mockito, dan sekarang saya mencoba untuk mengejek panggilan metode ini

when(thingDoer.doSomething(any(Wrapper.class))).thenReturn(true);

Namun, ini akan memberi saya peringatan: Unchecked assignment: 'package.Wrapper' to 'package.Wrapper<T>'

Saya membaca saran lain di suatu tempat bahwa dengan Java 8, Anda seharusnya menggunakan any() alih-alih any(Wrapper.class). Namun, membaca dokumentasi tentang dua metode ini, any() akan menerima argumen nol dan any(Class) akan menolak argumen nol, jadi keduanya tidak sama persis. Apakah ada cara untuk mengecualikan nol tanpa mendapatkan peringatan?

2
EaterOfFromage 3 September 2020, 22:56

1 menjawab

Jawaban Terbaik

Gunakan isNotNull() sebagai pencocokan.

when(thingDoer.doSomething(isNotNull())).thenReturn(true);
1
Andy Turner 3 September 2020, 20:01