【发布时间】:2013-10-22 04:32:05
【问题描述】:
我正在做一个 Junit 测试,我需要同时处理 Easymock 和 Class 对象来进行测试。
下面是我的代码sn-p
@Before
public void setUp() {
request=EasyMock.createMock(SlingHttpServletRequest.class);
response=EasyMock.createMock(SlingHttpServletResponse.class);
}
@Test
public void testImage() {
RequestContext ctx = new RequestContext();
// RequestContext and RequestContext Util are both classes defined in Project
expect(RequestContextUtil.setupContext(request,response)).andReturn(ctx);
// This line is throwing an error , so I am not able to add replay or verify method
}
我尝试查看一个可以同时使用 Easy mock 和 Class 对象的示例,但我找不到适合我的情况。谁能给我举个例子?
【问题讨论】:
-
您尝试执行的操作不起作用,因为您的代码不使用模拟,而是调用无法模拟的静态方法(因为它没有在模拟上调用)。如果您提供更多背景信息以及您想要测试的内容和方式,也许有人可以帮助您找到解决方法。
-
我有一个 Util 类,它存储应用程序的请求上下文和其他相关的属性集。 Util 类使用 slingrequest 和 sling response 对象。我正在尝试在这个 Util 类(它的方法之一)上创建一个 junit 测试。
-
好吧,如果没有看到整个代码,很难给您任何建议,但您可能不得不停止使用模拟并正确设置所有内容,或者重构您的代码库以便使用模拟。
-
我想如果简单的模拟不能提供这样的东西,那么我可能不得不重新考虑
-
嗯,有一些方法可以解决这个问题,但是当我在 SO 上提到 PowerMock 时,我总是觉得很脏:code.google.com/p/powermock/wiki/MockStatic 这不是一个好习惯,你应该对使用 PM 感到难过 :-)
标签: java unit-testing junit easymock