gpt4 book ai didi

powermock - 我如何使用 powermockito verifyNew?

转载 作者:行者123 更新时间:2023-12-04 15:22:54 29 4
gpt4 key购买 nike

遇到这个问题。我过去经常使用 Powermockito。通常这很顺利。我想我会发布我的问题,而不是继续翻阅示例。因此,目标是验证对类的 new 调用。我不认为这是 powermockito 最受欢迎的功能。
这是测试:

import static org.powermock.api.mockito.PowerMockito.verifyNew;
import static org.powermock.api.mockito.PowerMockito.whenNew;

@RunWith(PowerMockRunner.class)
@PrepareForTest(ClassUnderTest.class)
public class VerifyNewTest {

ClassUnderTest myClassUnderTest = new ClassUnderTest();

@Before
public void setUp() throws Exception {
}

@Test
public void test() throws Exception {
whenNew(Collaborator.class).withNoArguments().thenReturn(new Collaborator());
myClassUnderTest.doSomething();
verifyNew(Collaborator.class).withNoArguments();
}

}

并说类
public class ClassUnderTest {

public void doSomething() {
new Collaborator();
}
}


public class Collaborator {

}

我的目标是使这尽可能简单。我想我可以添加一些模拟对象并 stub 一些行为。反正我懂。
org.mockito.exceptions.misusing.UnfinishedStubbingException:  Unfinished stubbing detected here:
-> at org.powermock.api.mockito.internal.invocationcontrol. MockitoNewInvocationControl.expectSubstitutionLogic(MockitoNewInvocationControl.java:65)

例如。 thenReturn()可能会丢失。
正确 stub 的例子:
when(mock.isOk()).thenReturn(true);
when(mock.isOk()).thenThrow(exception);
doThrow(exception).when(mock).someVoidMethod();

提示:
1. 失踪 thenReturn() 2. 你正试图 stub 一个最终的方法,你这个顽皮的开发者!

最佳答案

whenNew() 中返回一个模拟对象条款适用于您的情况。

@Test
public void test() throws Exception {
whenNew(Collaborator.class).withNoArguments().thenReturn(mock(Collaborator.class));
myClassUnderTest.doSomething();
verifyNew(Collaborator.class).withNoArguments();
}

关于powermock - 我如何使用 powermockito verifyNew?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21609645/

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