我还有最后一节课,大概是这样的:
public final class RainOnTrees{
public void startRain(){
// some code here
}
}
我在其他一些类中使用这个类,像这样:
public class Seasons{
RainOnTrees rain = new RainOnTrees();
public void findSeasonAndRain(){
rain.startRain();
}
}
在我的JUnit测试类Seasons.java中,我想模拟RainOnTrees类。我怎么能用Mockito做到这一点?
我正在编写我在Java 11中模拟final/private类及其方法的各种失败尝试之后所遵循的步骤,这些尝试最终对我有用。
在里面创建一个名为org.mockito.plugins.MockMaker的文件
您的test/resources/mockito-extensions文件夹。请创建
Mockito-extensions文件夹(如果还没有)。
在上面的org.mockito.plugins.MockMaker文件中添加一行mock-maker-inline内容
添加
@RunWith(PowerMockRunner.class)
@PowerMockIgnore({"javax.management.*", "jdk.internal.reflect.*", "com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "org.w3c.*"})
@PrepareForTest(Utility.class)
类级别的注释。
在测试类中设置过程
@Before
public void setup () {
MockitoAnnotations.initMocks(this);
Mockito.mockStatic(ClassToBeMocked.class);
}
使用Mockito.when(..).thenReturn(..)进行断言
在多个测试用例的情况下,添加下面的代码
@After
public void after() {
Mockito.framework().clearInlineMocks();
}
我正在使用的模拟版本:3.9.0
Java版本:11