【发布时间】:2021-01-30 06:50:22
【问题描述】:
Mockito 3.6 支持在 try-with-resources 块下模拟静态方法,如 here 所述。
有人可以告诉我是否使用@Before 或@BeforeClass 中的Powermock 模拟了静态方法,是否可以使用Mockito.mockStatic 替换它们而无需完全重写测试类?
【问题讨论】:
标签: java java-8 mockito mockstatic
Mockito 3.6 支持在 try-with-resources 块下模拟静态方法,如 here 所述。
有人可以告诉我是否使用@Before 或@BeforeClass 中的Powermock 模拟了静态方法,是否可以使用Mockito.mockStatic 替换它们而无需完全重写测试类?
【问题讨论】:
标签: java java-8 mockito mockstatic
我认为您可能需要进行一些重构。您可以通过在类级别创建一个 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
}
【讨论】:
就像@John 说的,这个方法很好用。
我的经验是,模拟 必须 在 After/AfterEach 块中关闭。否则,在调用下一个测试方法时会出现“使用中的模拟”错误。
【讨论】: