JMockit - 模拟需要集合的方法时发出警告

JMockit - warning when mocking methods that expect Collections

有没有办法让下面的 mock 在没有 Unchecked cast 警告的情况下工作:

new Expectations() {{
        UrlService.addUrls((List<String>)any); result = expectedCandidates; 
}};

UrlService.addUrls() 方法的签名是:

static List<Candidate> addUrls(List<String> urls)

试试这个:

new Expectations() {
        {
            UrlService.addUrls(withArgThat(new IsAnything<List<String>>())); result = expectedCandidates;
        }
    };

最好的替代方法是使用 T witnAny(T arg) 参数匹配器:

new Expectations() {{
    UrlService.addUrls(withAny(new ArrayList<String>()));
    result = expectedCandidates;
}};

或者,如果您的 IDE 支持,则在本地禁用代码检查。使用 IntelliJ,我可以写:

new Expectations() {{
    //noinspection unchecked
    UrlService.addUrls((List<String>) any);
    result = expectedCandidates;
}};

...这真的可以。代码检查固然很好,但总有一些例外情况,可以禁用它们。