Simule métodos estáticos de várias classes usando PowerMock
103
Eu sei como simular métodos estáticos de uma classe usando PowerMock.
Mas eu quero simular métodos estáticos de várias classes em uma classe de teste usando JUnit e PowerMock.
Alguém pode me dizer se é possível fazer isso e como fazer?
Você apenas faz isso da mesma maneira que simula métodos de classes únicas. Onde você está preso?
artbristol de
Ao usar o powermock, você precisa adicionar esta anotação à classe de teste @PrepareForTest (ClassThatContainsStaticMethod.class). Mas não podemos especificar várias anotações. Então, como fazê-lo?
Novato em
Respostas:
256
Basta fazer @PrepareForTest({Class1.class,Class2.class})para várias classes.
Também não se esqueça de mudar para PowerMockRunner @RunWith(PowerMockRunner.class)no nível de classe
Nikita Barishok
1
@NikitaBarishok nem sempre é necessário. Você pode definir uma regra para fazer o trabalho acima -@Rule public PowerMockRule rule = new PowerMockRule();
Aniket Thakur,
5
em kotlin@PrepareForTest(Class1::class, Class2::class))
Ryan
Também é melhor usar em @PrepareOnlyThisForTestvez de @PrepareForTest. O último também modifica as superclasses, o que normalmente não é necessário.
Respostas:
Basta fazer
@PrepareForTest({Class1.class,Class2.class})
para várias classes.fonte
@RunWith(PowerMockRunner.class)
no nível de classe@Rule public PowerMockRule rule = new PowerMockRule();
@PrepareForTest(Class1::class, Class2::class))
@PrepareOnlyThisForTest
vez de@PrepareForTest
. O último também modifica as superclasses, o que normalmente não é necessário.etc ...
fonte
PowerMock 1.6.5
problemas de uso@PrepareForTest
no nível do método (só funciona no nível da classe para mim)Em java com powermock / junit, use
@PrepareForTest({})
com quantas classes estáticas você quiser como array ({}
).Usei o powermock com em scala / junit, pois o scalatest não tem integração com o powermock.
fonte
Se você estiver usando kotlin, a sintaxe é esta
@PrepareForTest(ClassA::class, ClassB::class)
fonte