Mock static methods from multiple class using PowerMock

JavaJunit4Powermock

Java Problem Overview


I know how to mock static methods from a class using PowerMock.
But I want to mock static methods from multiple classes in a test class using JUnit and PowerMock.

Can anyone tell me is it possible to do this and how to do it?

Java Solutions


Solution 1 - Java

Just do @PrepareForTest({Class1.class,Class2.class}) for multiple classes.

Solution 2 - Java

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

etc...

Solution 3 - Java

If you are using kotlin, the syntax is this

@PrepareForTest(ClassA::class, ClassB::class)

Solution 4 - Java

In java with powermock/junit, use @PrepareForTest({}) with as many static classes as you want as array ({}).

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

}

I have used powermock with in scala/junit, as scalatest does not have integration with powermock.

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

  @Test
  def test() {
  }
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionNewbieView Question on Stackoverflow
Solution 1 - JavaartbristolView Answer on Stackoverflow
Solution 2 - Javaarush436View Answer on Stackoverflow
Solution 3 - JavaEzioView Answer on Stackoverflow
Solution 4 - JavaprayagupaView Answer on Stackoverflow