提问人:Mayur 提问时间:10/18/2023 最后编辑:Mayur 更新时间:10/20/2023 访问量:24
将 Mockito.mockStatic 集中用于整个测试项目
Centralize Mockito.mockStatic for entire test project
问:
我从项目中删除了整个 PowerMock,因为它与 Java 17 不兼容。
这是一个非常庞大的项目,有很多测试用例,一些重要的类有静态方法,已经在项目的测试用例中使用了。
我用 Mocktio.mockstatic 替换了 PowerMockito.mockStatic。继承正在被使用。项目具有重要的 ParentTest 类,测试的所有其他部分都扩展了它。
我用@Before将 Mocktio.mockstatic 从子类移动到 Parent 类,并关闭了这个模拟@After。
通过做这一切,一切正常,但总体而言,由于“静态模拟已在当前线程中注册”,测试覆盖率已大幅下降
此外,一些测试用例单独运行,但在使用测试套件运行时失败,原因相同。
低于一
@RunWith(MockitoJUnitRunner.Silent.class)
@ContextConfiguration(locations ="classpath:test-setup.xml"
})
public class ParentTest extends TestCase{
private MockedStatic<HDType> mockStaticHDType;
@Before
public void intialization() throws Exception {
mockStaticHDType = Mockito.mockStatic(HDType.class);
@After
public void close(){
mockStaticHDType.close();
}
}
public class ABC extends ParentTest {
@Test
public void testHD() throws BusinessException {
Hd hd = Mockito.mock(Hd.class);
hd.setHDId(1);
Mockito.when(HDType.getHDimension(Mockito.any(),Mockito.any())).thenReturn(hd);
}
}
上述将 Mockito.mockstatic 集中到整个项目的方法是正确的吗?或者它是否需要在每个单独的测试类中创建它并在那里关闭它。
如果有其他好的方法,请帮助我。
答: 暂无答案
评论