Jeśli jesteś w stanie byłaby kod, można owinąć połączeń na końcowych/metody statyczne w prostych metod instancji, na przykład:
protected Foo doBar(String name) {
return Utility.doBar(name);
}
Pozwala to zastąpić metodę otoki w test jednostkowy, aby zwrócić fałszywą instancję Foo.
Alternatywnie można użyć Powermock, która rozciąga EasyMock (i), aby pozwolić Mockito szyderczy metod końcowych i statycznych:
PowerMock to ramy, które rozciągają innych bibliotek makiety takich jak EasyMock z bardziej potężnymi możliwościami. PowerMock wykorzystuje niestandardową manipulację klockami i kodami bajtowymi, aby umożliwić wyszydzanie statycznych metod, konstruktorów, końcowych klas i metod, prywatnych metod, usuwania inicjalizatorów statycznych i innych.
Oto test example szyderczy statyczną metodę ostateczną, przykład pokazuje, jak wyśmiewać jakieś inne rodzaje też:
@Test
public void testMockStaticFinal() throws Exception {
mockStatic(StaticService.class);
String expected = "Hello altered World";
expect(StaticService.sayFinal("hello")).andReturn("Hello altered World");
replay(StaticService.class);
String actual = StaticService.sayFinal("hello");
verify(StaticService.class);
assertEquals("Expected and actual did not match", expected, actual);
// Singleton still be mocked by now.
try {
StaticService.sayFinal("world");
fail("Should throw AssertionError!");
} catch (AssertionError e) {
assertEquals("\n Unexpected method call sayFinal(\"world\"):",
e.getMessage());
}
}
Czy jest jakikolwiek powód, dla którego konieczne jest użycie makiety Framework? –
Tak, wywołania metod używają właściwości JNDI do łączenia się z bazą danych i JMS, nie chcę implementować wszystkich elementów do mojego testu. –
Czy jesteś w stanie zinwentaryzować któryś ze starszych kodów, aby Ci pomóc? –