2017-10-09 4 views
0

Ich habe eine statische Methode in einer Klasse. Die Methode ist nicht endgültig. Ich bekomme immer ein when() erfordert ein Argument, das ein 'Methodenaufruf bei einem Mock'-Fehler sein muss. Unten ist mein Code.Mock statische Methoden

mockStatic(HomefeedExperimentUtils.class); 

when(HomefeedExperimentUtils.getGroupAndActivateExperiment(
    "link_stock_signal_filter_exp")).thenReturn(
    "treatment"); 

Ich habe auch versucht:

HomefeedExperimentUtils mock = org.mockito.Mockito.mock(HomefeedExperimentUtils.class); 

when(mock.getGroupAndActivateExperiment(
    "link_stock_signal_filter_exp")).thenReturn(
    "treatment"); 

Jede mögliche Hilfe bei geschätzt.

Danke!

+0

nicht Mock Statik tun. Testen Sie öffentliches Verhalten, und wenn die Statik öffentlich ist, testen Sie sie direkt. – chrylis

+0

Verwenden Sie nicht "statische" Methoden an erster Stelle. Sie machen Ihren Code unflexibel und schwer wiederzuverwenden (wie Ihr Problem einen Mock stattdessen zeigt). Und nein: es gibt keine Regel, dass Hilfsklassen * statische Methoden haben müssen ... –

+0

http://idownvotedbecau.se/noresearch/ – GhostCat

Antwort

0

Mockito kann kein statisches Mocking ausführen, verwenden Sie PowerMock, um ihre Fähigkeiten zu erweitern und dies zu erreichen.

https://github.com/powermock/powermock/wiki

+0

Aber bevor Sie sich Ihrem schlechten Entwurf mit PowerMock ergeben, entfernen Sie das 'static' Schlüsselwort von diese Methode im Test! –