Gya*_*ngh 22 java testing static-methods unit-testing mockito
我试图在测试中验证是否调用了静态方法。我正在使用 Mockito 来达到这个目的。
这个问题与此类似。但是,最高票数回复中建议的解决方案不再适用,因为 MockedStatic 验证方法已被弃用。
try (MockedStatic<SomePublicClass> dummyStatic = Mockito.mockStatic(SomePublicClass.class)) {
dummyStatic.when(() -> SomePublicClass.myPublicStaticFunc(anyInt()))
.thenReturn(5);
// when
System.out.println(SomePublicClass.myPublicStaticFunc(7));
//then
dummyStatic.verify(
times(1),
() -> SomePublicClass.myPublicStaticFunc(anyInt())
);
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是调用
verify(dummyStatic).myPublicStaticFunc(anyInt);
Run Code Online (Sandbox Code Playgroud)
但是,它抱怨类型 MockedStatic 的方法 myPublicStaticFunc(int) 未定义。
我有什么选择,或者我错过了什么。另外,我知道我可以使用 PowerMock 尝试此操作,但目前,我尝试仅使用 Mockito 来实现此操作。
m.a*_*icz 37
看来 deprecated is void verify(VerificationMode mode, Verification verification)whilevoid verify(Verification verification, VerificationMode mode)仍然可以,所以你可以使用verify像这样的方法
dummyStatic.verify(
() -> SomePublicClass.myPublicStaticFunc(anyInt()),
times(1)
);
Run Code Online (Sandbox Code Playgroud)
我使用了以下依赖项:testImplementation "org.mockito:mockito-inline:3.12.1"。
看来mockito-core你将无法嘲笑这一点,因为你会收到
使用的MockMaker子类ByteBuddyMockMaker不支持静态mock的创建
| 归档时间: |
|
| 查看次数: |
37613 次 |
| 最近记录: |