Jak łatwo wyśmiewać metodę statyczną w Javie?Jak w prosty sposób wyobrazić metodę statyczną w Javie (jUnit4)?
Używam Wiosna JUnit 2.5 i 4.4
@Service
public class SomeServiceImpl implements SomeService {
public Object doSomething() {
Logger.getLogger(this.class); //a static method invoked.
// ...
}
}
nie kontrolować metody statycznej, że moja usługa musi powołać więc nie Refactor to być bardziej unit-sprawdzalne. Użyłem jako przykładu Log4J Logger, ale prawdziwa statyczna metoda jest podobna. Nie można zmienić metody statycznej.
Doing pracy Grails, jestem przyzwyczajony do korzystania coś takiego:
def mockedControl = mockFor(Logger)
mockControl.demand.static.getLogger{Class clazz-> … }
…
mockControl.verify()
Jak mogę zrobić coś podobnego w Java?
Czy możesz zmienić implementację SomeServiceImpl? –
Nieważne, Jon Skeet właśnie opublikował to, co myślałem. Czuję się dumny! (myśląc jak Jon Skeet hehe) –
Tak, mogę zmienić SomeServiceImpl, ale dlaczego powinienem? Dlaczego dodatkowe pośrednictwo? –