Mockito 3.6:在@Before或@BeforeClass中与JUnit4一起使用mockStatic

tuk*_*tuk 8 java mockito java-8 mockstatic

Mockito 3.6 支持在块下模拟静态方法try-with-resources,如此处所述

有人可以让我知道静态方法是否使用 Powermock 进行模拟,@Before或者@BeforeClass可以Mockito.mockStatic用来替换它们而无需完全重写测试类吗?

Joh*_*ohn 17

我认为您可能需要进行一些重构。您可以通过在类级别创建 MockedStatic 变量来创建静态方法的模拟,并在测试中使用它,有时还需要在 @After 块中关闭它,例如

MockedStatic<StaticClass> mockedStaticClass;
@Before
public void setUp()
{
  mockedStaticClass = Mockito.mockStatic(StaticClass.class);
}

@After
public void tearDown() throws Exception
{
  mockedStaticClass.close();
}

@Test
public void yourTest()
{
  //make use of mockedStatic variable you created earlier
}
Run Code Online (Sandbox Code Playgroud)