繁体   English   中英

测试工厂/制造商生产缺少良好相等性的第三方对象的最佳方法是什么?

[英]What is the best way to test a factory/builder producing third party objects that lack a good equality?

举个例子; 我正在开发一个生成Apache HttpUriRequests的生成器。

我的测试如下:

@Test
public void testRequestGet() {
    HttpUriRequest request = RequestBuilder.request("http://www.google.com").get();

    assertEquals(new HttpGet("http://www.google.com"), request);
}

这失败了,显然是因为HttpGet没有定义#equals,因此默认为Object#equals。

我可以手动测试产生的HttpGet的所有组件的相等性,以验证它们是否符合我的期望-这现在很容易,但是一旦标头,参数等开始涉及,它可能会变得很丑陋(加上测试HttpEntity会带来的额外噪音)我将#post()添加到生成器后,请摆姿势)。

在走这条路线之前,我想问一下是否有更好的方法来解决这一大类问题。

好吧,我觉得很傻。

EqualsBuiilder可以选择进行递归测试。

@Test
public void testGetRequest() {
    HttpGet request = RequestBuilder.request("http://www.google.com").get();

    HttpGet expected = new HttpGet("http://www.google.com");

    assertEquals(true, new EqualsBuilder().setTestRecursive(true).reflectionAppend(expected, request).isEquals());
}

以我想要的方式工作:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM