【问题标题】:In my EasyMock I have an error from an object inside the test class's method在我的 EasyMock 中,测试类方法中的对象出现错误
【发布时间】:2015-12-30 16:47:29
【问题描述】:

给定代码

@Test
public void testXClass(){
    XClass xclass = new XClass();
    UriBuilder uriBuilder = EasyMock.createMock(UriBuilder.class);
    EasyMock.expect(uriBuilder.fromUri(EasyMock.anyObject(String.class))).andReturn(dummyUriBuilder()).anyTimes();
    //EasyMock.replay(uriBuilder);
    EasyMock.expect(xclass.xMethod(EasyMock.anyObject(String.class))).andReturn("Done").anyTimes();
    String x  = xclass.xMethod(EasyMock.anyObject(String.class));
}

private UriBuilder dummyUriBuilder() {
    UriBuilder uriBuilder = UriBuilder.fromUri("https://dev.x-service.com");
    uriBuilder.path("/x1/");
    return uriBuilder;
}

class XClass {

    public String xMethod(String x) {
        ...
        UriBuilder uriBuilder = UriBuilder.fromUri("https://dev.x-service.com");
        uriBuilder.path("/x1/");
        ...
    }
}

我在线路上遇到错误

UriBuilder uriBuilder = UriBuilder.fromUri("https://dev.x-service.com");

堆栈跟踪:

java.lang.IllegalArgumentException at
  org.apache.cxf.jaxrs.impl.UriBuilderImpl.uri(UriBuilderImpl.java:888) at
  javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119)

如何模拟 UriBuilder 的东西?我认为我在设置 EasyMock 时做错了。

【问题讨论】:

    标签: testng powermock easymock


    【解决方案1】:

    您需要模拟静态方法UriBuilder.fromUri。 EasyMock 无法做到这一点。为此,您需要PowerMock

    【讨论】:

    • 谢谢,根据你的建议,我添加了这个,PowerMock.mockStatic(UriBuilder.class); EasyMock.expect(UriBuilder.fromUri(EasyMock.anyObject(String.class))).andReturn(dummyUriBuilder()); PowerMock.replay(UriBuilder.class);得到同样的错误
    • 你使用PowerMockRule(或PowerMockRunner)吗:github.com/jayway/powermock/wiki/PowerMockRule
    • PowerMockRule 和 PowerMockRunner 与 JUnit 一起使用,我使用的是 TestNg,我的测试用例扩展了 org.powermock.modules.testng.PowerMockTestCase
    猜你喜欢
    • 2012-07-14
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    • 2020-07-31
    相关资源
    最近更新 更多