2012-04-26 7 views
76

Wiem, jak fałszywe statyczne metody z klasy przy użyciu PowerMock.
Ale chcę udawać metody statyczne z wielu klas w klasie testowej przy użyciu JUnit i PowerMock.Makiety metod statycznych z wielu klas przy użyciu PowerMock

Czy ktoś może mi powiedzieć, czy można to zrobić i jak to zrobić?

+1

Po prostu robisz to w ten sam sposób, w jaki wyśmiewasz metody z pojedynczych klas. Gdzie utknąłeś? – artbristol

+0

Podczas korzystania z powermock, należy dodać tę adnotację do klasy testowej @PrepareForTest (ClassThatContainsStaticMethod.class). Ale nie możemy podać wielu adnotacji. Jak to zrobić? – Newbie

Odpowiedz

182

Po prostu wykonaj @PrepareForTest({Class1.class,Class2.class}) dla wielu klas.

+7

nawiasy klamrowe! właśnie tego mi brakowało. – sudocoder

+2

Nie zapomnij również przełączyć się na PowerMockRunner za pomocą '@RunWith (PowerMockRunner.class)' na poziomie klasy –

+0

@NikitaBarishok nie zawsze jest potrzebny. Zamiast tego możesz zdefiniować regułę - '@ Reguła public PowerMockRule rule = new PowerMockRule();' –

8
@Test 
@PrepareForTest({Class1.class, Class2.class}) 
public final void handleScript() throws Exception { 
    PowerMockito.mockStatic(Class1.class); 
    PowerMockito.mockStatic(Class2.class); 

etc ...

+0

Co do 'PowerMock 1.6.5' występują problemy z używaniem' @ PrepareForTest' na poziomie metody (działa tylko dla mnie na poziomie klasy) –

2

w Javie z powermock/JUnit, użycie @PrepareForTest({}) z tak wielu klas statycznych, jak chcesz jak array ({}).

@RunWith(PowerMockRunner.class) 
@PrepareForTest({XmlConverterA.class, XmlConverterB.class}) 
class TransfersServiceExceptionSpec { 

} 

Użyłem powermock ze w Scala/JUnit, jak scalatest nie posiada integrację z powermock.

@RunWith(classOf[PowerMockRunner]) 
@PrepareForTest(Array(classOf[XmlConverterA], classOf[XmlConverterB])) 
class TransfersServiceExceptionSpec { 

    @Test 
    def test() { 
    } 
}