[英]How do I verify a call to a static method in a final class using jMockit and TestNG?
如何使用 jMockit 在最终 class 中验证对 static 方法的调用?
在 PowerMockito 中,这是不可能的,因为 class 是最终的。 如果使用 jMockit 无法做到这一点,有什么替代方案?
您应该可以在PowerMockito中做到这一点,是的。
无论如何,在JMockit中,通常会编写如下的验证块:
@Test
public void exampleTest(@Mocked AFinalClass mock)
{
// Call the code under test which uses AFinalClass.
new Verifications() {{ AFinalClass.someStaticMethod(); }};
}
下面是我基于@Mocked
和MockUp
的版本
public class Util {
static {
// static initializer
}
public static void doSomething(String arg) {
// do something
}
}
public class SomeTest {
@Test
public void testDoSomething(@Mocked Util util) {
// NOTE: need to move the `MockUp` to @BeforeClass method if you want to mock the static initializer
new MockUp<Util>() {
@Mock
void $clinit() {
// do nothing
}
@Mock
void doSomething(String arg) {
// mock doSomething
}
};
// action to test
// verify
new Verifications() {{
String arg;
Util.doSomething(arg = withCapture());
assertEquals("expected", arg);
}};
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.