运行以下代码时,我在此处检测到错误消息Unfinished stubing:
这是带有公共静态void myMethod的MyClass。
class MyClass{
public static void myMethod(){
return;
}
}
这是MyClass2和myMethod2方法。在myMethod2内部,myMethod正在调用。
class MyClass2{
public String myMethod2(){
MyClass.myMethod();
return "String";
}
}
这里是为测试myMethod2而编写的测试用例。
class MyMethodTest{
MyClass2 myClass2;
@Test
public void myMethodTwoTest(){
PowerMockito.mockStatic(MyClass.class);
PowerMockito.doNothing().when(MyClass.class);
MyClass.myMethod();
String str = myClass2.myMethod2();
assertEquals(str,"String");
}
}
当运行这个方法时,我得到了UnfinishedStubbingException。
org.mockito.exceptions.misusing.UnfinishedStubbingException:
Unfinished stubbing detected here:
-> at **.***.***.**.MyMethodTest.myMethodTwoTest(MyMethodTest.java:125)
E.g. thenReturn() may be missing.
Examples of correct stubbing:
when(mock.isOk()).thenReturn(true);
when(mock.isOk()).thenThrow(exception);
doThrow(exception).when(mock).someVoidMethod();```
Please help me to solve this issue.
我相信https://www.baeldung.com/mockito-mock-static-methods这是一个很好的解释。考虑到这一点,我认为应该采取以下措施:
class MyMethodTest{
MyClass2 myClass2;
@Test
public void myMethodTwoTest(){
PowerMockito.mockStatic(MyClass.class).when(MyClass::myMethod).doNothing();
String str = myClass2.myMethod2();
assertEquals(str,"String");
}
当运行以下代码时,我将在此处得到未完成的Stubbing检测到的错误消息: 这是带有公共静态空MyMethod的MyClass。 } 当运行这个方法时,我得到的是UnfinishedStubbingException。
当使用mock静态方法时,出现了这个异常。 unfinishedstubbingException:在这里检测到未完成的stubbing:at utils.powermocktest.test(powermocktest.java:18) null
编辑: 感谢所有的回复。我找到了解决办法。我试图模拟一个方法findById,它不是直接在User.class中,而是在用户扩展的genericModel.class中。现在一切都很完美。
我试图用PowerMock在Mockito上模拟一个静态void方法,但它并不是那么好用。 我的示例代码: EvilBrother.java 我的问题是,嵌套类按照预期的方式使用@PrepareForTest和PowerMockito.MockStatic组合进行了模拟,但是如果类在自己的类文件中,这些语句就不起作用了。 如何修复这个测试? 与 尽管执行了assert.fail,但可以通过Powe
我有自定义的Log4j2 appender: 我想模拟: