Java PowerMockito.whenNew不工作

Java PowerMockito.whenNew不工作,java,junit,powermockito,Java,Junit,Powermockito,大家好,我是PowerMockito的新手,我正在尝试在PoweMockito中使用whenNew,它对我不起作用,有人能帮我解决这个问题吗 下面是我用来测试Class2的测试方法,我使用PowerMockito.whenNew在Class2内模拟mockTestMethod,并将字符串值返回为“MOCKED Value”,但这并没有发生,实际上正在执行该方法,输出为“PassedString”。 如果我没有错的话,输出的字符串应该是“Inside Class2 method MOCKED VA

大家好,我是PowerMockito的新手,我正在尝试在PoweMockito中使用whenNew,它对我不起作用,有人能帮我解决这个问题吗

下面是我用来测试Class2的测试方法,我使用PowerMockito.whenNew在Class2内模拟mockTestMethod,并将字符串值返回为“MOCKED Value”,但这并没有发生,实际上正在执行该方法,输出为“PassedString”。 如果我没有错的话,输出的字符串应该是“Inside Class2 method MOCKED VALUE”,但我得到的输出是“Inside Class2 method PassedString” 请帮我解决这个问题, 提前谢谢

下面是我正在编写的完整程序

package com.hpe.testing2;

public class Class2 {

    public void testingMethod(){
        Class1 class1 = new Class1();
        String result = class1.mockTestMethod("PassedString");
        System.out.println("Inside Class2 method " + result);
    }

}

package com.hpe.testing2;

public class Class1 {

    public String mockTestMethod(String str2){
        String str1="SomeString";
        str1 = str2;
        System.out.println("Inside MockTest Method " + str1);
        return str1;
    }

}
class2正在内部调用Class1 mockTestMethod,如上所示

package com.hpe.testing2;


import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;


@RunWith(PowerMockRunner.class)
@PrepareForTest({Class2.class,Class1.class})
public class ClassTest {

    public static void main(String[] args) throws Exception {
        ClassTest testing = new ClassTest();
        testing.runMethod();
    }

    public void runMethod() throws Exception{
        Class2 class2 = new Class2();
        Class1 class1 = PowerMockito.mock(Class1.class);
        PowerMockito.whenNew(Class1.class).withAnyArguments().thenReturn(class1);
        PowerMockito.when(class1.mockTestMethod(Mockito.anyString())).thenReturn("MOCKED
 VALUE");
        class2.testingMethod();
    }

}

不能通过
main
方法启动测试类。相反,它应该使用JUnit运行。因此,测试方法中必须有
@Test
注释。感谢您开始使用JUnit

@RunWith(PowerMockRunner.class)
@PrepareForTest({ Class2.class, Class1.class })
public class ClassTest {

    @Test
    public void runMethod() throws Exception {
        Class2 class2 = new Class2();
        Class1 class1 = PowerMockito.mock(Class1.class);

        PowerMockito.whenNew(Class1.class).withAnyArguments().thenReturn(class1);
        PowerMockito.when(class1.mockTestMethod(Mockito.anyString())).thenReturn("MOCKED VALUE");
        class2.testingMethod();
    }

}
(我在testclass中遗漏了导入)