Mam takie metody:
public <T> method(String s, Class<T> t) {...}
Że muszę sprawdzić, czy null
jest przekazywany do drugiego argumentu, gdy używam dopasowań dla innych parametrów, robiłem to:
@SuppressWarnings("unchecked")
verify(client).method(eq("String"), any(Class.class));
Ale czy jest lepszy sposób (bez wyłączania ostrzeżeń)? T
reprezentuje typ zwracany przez inną metodę, która jest czasami void
iw takich przypadkach null
przekazywana.
java
unit-testing
mocking
mockito
pusty
źródło
źródło
null
(zamiastany(Class.class)
)?Odpowiedzi:
Aktualizacja z odpowiedzi Davida Wallace'a:
Od 2016-12, Java 8 i Mockito 2.3,
public static <T> T isNull(Class<T> clazz)
jest przestarzały i zostanie usunięty w Mockito 3.0
posługiwać się
public static <T> T isNull()
zamiast
źródło
(Integer) isNull()
zamiast tegoisNull( Integer.class )
.org.mockito.Mockito.<String>isNull()
Mockito ma
isNull
dopasowanie , w którym możesz podać nazwę klasy. Więc jeśli potrzebujesz go użyć z innymi dopasowującymi, właściwą rzeczą do zrobienia jestverify(client).method(eq("String"),isNull(Class<?>.class));
To jest teraz przestarzałe, zobacz odpowiedź poniżej dla nowej metody - https://stackoverflow.com/a/41250852/1348
źródło
(String) isNull()
.isNull(String.class)
i(String) isNull()
są równoważne. Idź z tym, co jest dla ciebie bardziej sensowne.To działa dla mnie:
verify(client).method(eq("String"), eq((Class<?>) null));
źródło