当前位置: 首页 > 知识库问答 >
问题:

如何使用PowerMockito模拟私有方法的任何参数?

王才英
2023-03-14
public class MyService
{

    …
    private void myMethod(byte[] data, UserFile userFile, User user)
    {
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:test-context.xml" })
@PrepareForTest(MyServiceImpl.class)
public class MyServiceIT 
{

    @Rule
    public PowerMockRule rule = new PowerMockRule();

    @Autowired
    private MyService m_mySvc;
    private MyService m_mySvcSpy;

    @Before
    public final void setup() throws Exception
    {
        m_mySvcSpy = PowerMockito.spy(m_mySvc);
        PowerMockito.doNothing().when(m_mySvcSpy, “myMethod”, Matchers.any(byte[].class), Matchers.any(UserFile.class), Matchers.any(User.class));
testUploadFile(org.mainco.subco.user.service.MyServiceIT)  Time elapsed: 12.693 sec  <<< ERROR!

使用PowerMockito模拟私有方法的泛型参数的正确方法是什么?

共有1个答案

陈朗
2023-03-14

我想您的测试是用SpringJunit4ClassRunner注释的。在这种情况下,您必须使用PowerMockRule:

public class MyServiceTest {
    @Rule
    public PowerMockRule rule = new PowerMockRule();
    ...

此外,您还将MyService方法与PowerMock绑定在一起。因此,必须使用@PrepareforTest注释测试类:

...
@PrepareForTest(MyServiceImpl.class)
public class MyServiceTest {
    ...

完整代码:

@PrepareForTest(MyServiceImpl.class)
@RunWith(SpringJUnit4ClassRunner.class)
public class MyServiceTest {
    @Rule
    public PowerMockRule rule = new PowerMockRule();

    @Autowired
    private MyService service;
    private MyService spy;

    @Before
    public final void setup() throws Exception {
        spy = PowerMockito.spy(service);
        PowerMockito.doNothing().when(spy,
                "myMethod",
                Matchers.any(byte[].class),
                Matchers.any(UserFile.class),
                Matchers.any(User.class));
    }

    ...
}
 类似资料:
  • 问题内容: 我正在尝试模拟私有静态方法。见下面的代码 这是我的测试代码 但是我运行的每个瓦片都会出现此异常 我想我在嘲弄东西时做错了什么。有什么想法我该如何解决? 问题答案: 为此,您可以使用和。 此外,您必须在测试类中指定PowerMock运行器,并准备要进行测试的类,如下所示: 希望对您有帮助。

  • 问题内容: IDK(是否重复),但我确定找不到相关项目。我一直期望这真的很简单,因为通过反射它非常简单,但是我宁愿使用正确的工具来完成它。 澄清:旧版代码。没有吸气剂/二传手。 为此使用Whitebox是否正确?我以为是“超限”,即内部API的一部分?…或者那是严格的Mockito吗? 问题答案: 请参阅。 例如-给定的类需要测试: 具有以下私有实例: 然后可以用来设置的私有状态,以便可以对其进行

  • 我试图模拟一个私有方法(executeGetRequest),在我声明要为私有方法返回的模拟的那一行中,私有方法实际上是用null参数执行的,因此抛出了一个NullPointerException。 VlcPlayerMinimal。爪哇: VlcPlayerMinimalTest。爪哇: 堆栈跟踪: 它似乎PowerMockito实际上是调用的方法,我试图在行PowerMockito.do返回(

  • 有人能帮帮我吗?提前谢了。

  • 我试图在测试的类中模拟一个私有方法,如下所示。 现在我需要测试方法和mock。 我尝试创建间谍的上述类,但该方法得到调用时,我这样做下面 在第二行本身被调用。而且,不会被模仿。 也许我用错误的方式创建了间谍对象?无法执行