Junit 如何使用Powermockito在同一个类中模拟静态和非静态方法

Junit 如何使用Powermockito在同一个类中模拟静态和非静态方法,junit,powermockito,Junit,Powermockito,我有一个既有静态方法又有非静态方法的类,我想为它编写单元测试用例。 甲级{ static getInstance() { // to do logic } void log() { system.out.print(); } } classA的测试用例是 ClassTest { public void setup() { PowerMockito.mockStatic(ClassA.class); mockA = PowerMockito.mock

我有一个既有静态方法又有非静态方法的类,我想为它编写单元测试用例。 甲级{

static getInstance()
{
   // to do logic
}

void log()
{
  system.out.print();
}
}
classA的测试用例是

ClassTest
{
  public void setup()
{
       PowerMockito.mockStatic(ClassA.class);
        mockA = PowerMockito.mock(ClassA.class);

      Mockito.when(ClassA.getInstance("user")).thenReturn(mockA);
        Mockito.doNothing().when(mockA).log(Mockito.anyString(),  Mockito.anyString(), Mockito.any(Exception.class), Mockito.anyMap());

    enter code here

}
}

当我调用log方法时,我遇到异常。我们如何模拟它?

严肃的回答:不要这样做

简单地避免编写需要PowerMock的生产代码;例如,因为您混合了对静态方法的调用

通常,“对PowerMock的需求”直接转化为:您的设计需要改进


您会很快发现PowerMock会产生更多它正在解决的问题。因此:避免使用它。

此外,我建议,如果您先编写生产代码,然后尝试围绕它进行测试,那么您的操作顺序就完全错了。试着先编写测试,看看您是否掌握了其中的诀窍——这会导致您的错误生产代码变得更加简单、清晰和易于测试。