Junit assertEquals在具有双字段的对象上

Junit assertEquals在具有双字段的对象上,junit,double-precision,Junit,Double Precision,我有两个对象列表。这些对象引用其他对象,而这些对象又包含双精度对象。我想使用assertEquals来测试这两个对象是否相同。我已经亲自核实过了,但是assertEquals仍然返回false。我认为原因是由于精度问题,双打不一样。我知道我可以通过深入到双字段并使用assertEquals(d1、d2、delta)来解决这个问题,但这似乎很麻烦。是否有任何方法可以为assertEquals提供一个增量(或另一种方法),以便它在遇到双精度比较时可以使用该增量?可能会使这更容易一些。您可以创建一个自

我有两个对象列表。这些对象引用其他对象,而这些对象又包含双精度对象。我想使用assertEquals来测试这两个对象是否相同。我已经亲自核实过了,但是assertEquals仍然返回false。我认为原因是由于精度问题,双打不一样。我知道我可以通过深入到双字段并使用assertEquals(d1、d2、delta)来解决这个问题,但这似乎很麻烦。是否有任何方法可以为assertEquals提供一个增量(或另一种方法),以便它在遇到双精度比较时可以使用该增量?

可能会使这更容易一些。您可以创建一个自定义的
匹配器
(或
功能匹配器
-),然后将其与一个组合以测试双精度,然后使用容器匹配器()检查列表

例如,要检查只包含一个
对象的列表,该列表有一个
getValue
方法返回大约
10

Matcher<Thing> thingWithExpectedDouble =
    Matchers.<Thing>hasProperty("value", Matchers.closeTo(10, 0.0001));
assertThat(listOfItems, Matchers.contains(thingWithExpectedDouble));
Matcher thingWithExpectedDouble=
Matchers.hasProperty(“value”,Matchers.closeTo(10,0.0001));
资产(项目列表,Matchers.contains(thingWithExpectedDouble));