Mock metody statyczne z wielu klas przy użyciu PowerMock
103
Wiem, jak mockować metody statyczne z klasy za pomocą PowerMock.
Ale chcę mockować statyczne metody z wielu klas w klasie testowej przy użyciu JUnit i PowerMock.
Czy ktoś może mi powiedzieć, czy można to zrobić i jak to zrobić?
Robisz to w ten sam sposób, w jaki mockujesz metody z pojedynczych klas. Gdzie utkniesz?
artbristol
Korzystając z powermock, należy dodać tę adnotację do klasy testowej @PrepareForTest (ClassThatContainsStaticMethod.class). Ale nie możemy podać wielu adnotacji. Więc jak to zrobić?
Nowicjusz
Odpowiedzi:
257
Po prostu zrób @PrepareForTest({Class1.class,Class2.class})dla wielu zajęć.
Nie zapomnij również przejść na PowerMockRunner z @RunWith(PowerMockRunner.class)poziomem klasowym
Nikita Barishok
1
@NikitaBarishok nie zawsze jest potrzebne. Zamiast tego możesz zdefiniować regułę, aby powyższe działały -@Rule public PowerMockRule rule = new PowerMockRule();
Aniket Thakur
5
w kotlinie@PrepareForTest(Class1::class, Class2::class))
Ryan
Lepiej też używać @PrepareOnlyThisForTestzamiast @PrepareForTest. Ta ostatnia modyfikuje również nadklasy, co zwykle nie jest potrzebne.
Odpowiedzi:
Po prostu zrób
@PrepareForTest({Class1.class,Class2.class})
dla wielu zajęć.źródło
@RunWith(PowerMockRunner.class)
poziomem klasowym@Rule public PowerMockRule rule = new PowerMockRule();
@PrepareForTest(Class1::class, Class2::class))
@PrepareOnlyThisForTest
zamiast@PrepareForTest
. Ta ostatnia modyfikuje również nadklasy, co zwykle nie jest potrzebne.itp...
źródło
PowerMock 1.6.5
problemy z używaniem@PrepareForTest
na poziomie metody (u mnie działa tylko na poziomie klasy)W języku Java z powermock / JUnit, wykorzystania
@PrepareForTest({})
z tak wielu klas statycznych, jak chcesz jak array ({}
).Użyłem powermock w scala / junit, ponieważ scalatest nie ma integracji z powermockiem.
źródło
Jeśli używasz kotlin, składnia jest następująca
@PrepareForTest(ClassA::class, ClassB::class)
źródło