Mockito 3.6 支持在try-with-resources
块下模拟静态方法,如此处所述。
有人可以让我知道静态方法是使用 Powermock 模拟的,@Before
还是@BeforeClass
可以Mockito.mockStatic
在不完全重写测试类的情况下替换它们?
Mockito 3.6 支持在try-with-resources
块下模拟静态方法,如此处所述。
有人可以让我知道静态方法是使用 Powermock 模拟的,@Before
还是@BeforeClass
可以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 块中关闭模拟。否则,当调用下一个测试方法时,您会收到“使用中的模拟”错误。