spring 全局测试模拟静态方法
spring test mock static method globally
在 spring 测试中,我知道我可以使用 Mockito 模拟静态方法(通常是静态 util 方法:生成 id,从 Redis 获取值):
try (MockedStatic) {
}
但是在每个测试方法中都必须这样做既丑陋又麻烦,有什么办法可以做到这一切(我可以接受一个模拟行为)
我在想也许是 junit5 扩展,或 Mockito 扩展,这似乎是一个常见问题,我想知道是否有人尝试过任何成功的东西。
试试这个
public class StaticClassTest {
MockedStatic<YourStatic> mockedStatic;
@Before
public void setup() {
mockedStatic = Mockito.mockStatic(YourStatic.class);
// if you want the same behavior all along.
mockedStatic.when(() -> YourStatic.doSomething(anyString())).thenReturn("TEST");
}
@Test
public void test_static() {
// write your test here
}
@After
public void teardown() {
mockedStatic.close();
}
}
在 spring 测试中,我知道我可以使用 Mockito 模拟静态方法(通常是静态 util 方法:生成 id,从 Redis 获取值):
try (MockedStatic) {
}
但是在每个测试方法中都必须这样做既丑陋又麻烦,有什么办法可以做到这一切(我可以接受一个模拟行为)
我在想也许是 junit5 扩展,或 Mockito 扩展,这似乎是一个常见问题,我想知道是否有人尝试过任何成功的东西。
试试这个
public class StaticClassTest {
MockedStatic<YourStatic> mockedStatic;
@Before
public void setup() {
mockedStatic = Mockito.mockStatic(YourStatic.class);
// if you want the same behavior all along.
mockedStatic.when(() -> YourStatic.doSomething(anyString())).thenReturn("TEST");
}
@Test
public void test_static() {
// write your test here
}
@After
public void teardown() {
mockedStatic.close();
}
}