将 Mockito.mockStatic 集中用于整个测试项目

Centralize Mockito.mockStatic for entire test project

提问人:Mayur 提问时间:10/18/2023 最后编辑:Mayur 更新时间:10/20/2023 访问量:24

问:

我从项目中删除了整个 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 集中到整个项目的方法是正确的吗?或者它是否需要在每个单独的测试类中创建它并在那里关闭它。

如果有其他好的方法,请帮助我。

Spring JUNIT4 模拟内联

评论


答: 暂无答案