微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Mockito 3.6:在 @Before 或 @BeforeClass 中使用 mockStatic 和 JUnit4

如何解决Mockito 3.6:在 @Before 或 @BeforeClass 中使用 mockStatic 和 JUnit4

Mockito 3.6 支持const aComponent = React.useMemo(() => <p>This is the string of {a}</>,[a]) // then use it like return <>{ aComponent }</> 块下模拟静态方法,如 here 所述。

如果静态方法是在 try-with-resources 中使用 Powermock 模拟的,或者 @Before 可以使用 @BeforeClass 代替它们,而无需完全重写测试类,有人可以告诉我吗?

解决方法

我认为您可能需要进行一些重构。您可以通过在类级别创建 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 块中关闭。否则,当调用下一个测试方法时,您会收到“mock in use”错误。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。