3

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

有人可以让我知道静态方法是使用 Powermock 模拟的,@Before还是@BeforeClass可以Mockito.mockStatic在不完全重写测试类的情况下替换它们?

4

2 回答 2

7

我认为您可能需要进行一些重构。您可以通过在类级别创建一个 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
}
于 2021-01-30T20:37:49.333 回答
1

就像@John 说的那样,这种方法效果很好。

不过,我的经验是,必须在 After/AfterEach 块中关闭模拟。否则,当调用下一个测试方法时,您会收到“使用中的模拟”错误。

于 2021-02-11T20:05:39.907 回答