this is the class i want to mock
String buc = TrackerGenerator.getMetadataLocalThread().getIdUsuarioFinal();
这就是考验
@Test
public void serviceTest() {
TrackerGenerator trackerGenerator = mock(TrackerGenerator.class);
when(TrackerGenerator.getMetadataLocalThread().getIdUsuarioFinal()).thenReturn("0");
TrackerGenerator.setMetadataLocalThread(new ThreadLocal<>());
}
由于静态方法属于类,所以在Mockito中没有办法模拟静态方法。但是,您可以使用PowerMock与Mockito框架一起模拟静态方法。
具有静态方法的简单类:
public class Utils {
public static boolean print(String msg) {
System.out.println(msg);
return true;
}
}
JUnit测试用例中使用Mockito和PowerMock的类测试模拟静态方法;
@RunWith(PowerMockRunner.class)
@PrepareForTest(Utils.class)
public class JUnit4PowerMockitoStaticTest{
@Test
public void test_static_mock_methods() {
PowerMockito.mockStatic(Utils.class);
when(Utils.print("Hello")).thenReturn(true);
when(Utils.print("Wrong Message")).thenReturn(false);
assertTrue(Utils.print("Hello"));
assertFalse(Utils.print("Wrong Message"));
PowerMockito.verifyStatic(Utils.class, atLeast(2));
Utils.print(anyString());
}
}
问题内容: 我已经写了一家工厂来生产物体: 我想验证传递给的参数,但不知道如何模拟静态方法。我在测试用例中使用的是和。有没有模拟或验证此特定用例的好方法? 问题答案: 在Mockito上使用PowerMockito。 示例代码:
我正在尝试使用JUnit、Mockito和PowerMock验证对的调用。 下面是我的测试用例: 下面是测试中的代码: 非常有趣的是,这段代码失败时出现:
我想为我的更改编写测试,但遇到了问题--更改是在静态方法内进行的。代码如下所示 我想要的是模拟方法A和B,并且doSomething和所有这些在方法C中使用的静态方法,但目前我找不到任何方法来做到这一点。你现在有吗?
我有一个这样的方法。 > 如果我模拟记录器,是否必须将方法更改为post(字符串json,记录器记录器)?否则,如何使此模拟与该方法交互?
我想通过ts-Mockito@2.5.0创建一个类的模拟对象,但我无法正确设置它。 以下是设计的测试用例: 正如测试用例所暗示的,我希望从我的模拟中返回“I AM mocked”的值。 我应该如何设置模拟,使其按预期工作? 旁白:这个测试用例只是为了展示我正在经历的奇怪行为。这不是我真正的测试。我想在不同服务的单元测试中使用模拟。)
实际的方法是在第3行被调用()。我已经添加了和注释。 为什么调用实际方法?我也尝试了PowerMockito.do返回,但是得到了同样的问题。