gpt4 book ai didi

java - PowerMockito 私有(private) void 方法问题

转载 作者:行者123 更新时间:2023-12-01 09:07:39 32 4
gpt4 key购买 nike

我有以下类(class)

class PowerMockitoTest{

private void TestPrivateMethod(){
System.out.println("Inside private method");
}

public void TestPublicMethod(){
System.out.println("Inside public method");
TestPrivateMethod();
}
}

我创建了如下测试类

@RunWith(PowerMockRunner.class)
public class PowerMockitoExampleTest {

@Test
public void test() throws Exception {

PowerMockitoTest testclass = PowerMockito.spy(new PowerMockitoTest());
PowerMockito.doNothing().when(testclass,"TestPrivateMethod");
testclass.TestPublicMethod();

}

}

我没有将 OP 作为“内部公共(public)方法”,而是将非常奇怪的 OP 作为“内部私有(private)方法”。虽然我已经对私有(private)方法进行了 stub 处理,但它被调用,并且公共(public)方法的 sysout 没有被打印。

当我使用PowerMockito.doAnswer()时它工作正常,但它要求方法处于包级别而不是私有(private)。

最佳答案

这样写:

    PowerMockitoTest testclass = PowerMockito.spy(new PowerMockitoTest());
try {
PowerMockito.doNothing().when(testclass, PowerMockito.method(PowerMockitoTest.class, "TestPrivateMethod")).withNoArguments();
} catch (Exception e) {
e.printStackTrace();
}
testclass.TestPublicMethod();
顺便说一句:测试是关于模拟输入和调查输出(可以是模块的状态、函数的结果或对另一个函数的调用)。

您不应该模拟私有(private)方法,因为它们的结果不应该被视为输入,因为它们从外部不可见。

关于java - PowerMockito 私有(private) void 方法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41138199/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com