方法返回布尔形式xor

时间:2016-11-07 15:46:41

标签: java boolean-logic xor

使用java,我有一个方法:

boolean shouldPointBeAdded(boolean excludePoint, shapeContainsPoint){
    return excludePoint ^ shapeContainsPoint;
}

用作:

if(shouldPointBeAdded(excludePoint, shape.contains(point))

这用作if条件,但它的执行方式与我直接作为if条件执行XOR的方式相同。

注意:我已将XOR包装在一个测试和可读性的方法中。

运行单元测试用例时,使用方法shouldPointBeAdded()时,断言不会返回正确的值,但是当在if条件中直接使用XOR时,它们会返回正确的值。

思想??

感谢。

更新: 使shouldPointBeAdded()静态解决了感知问题,所以我认为问题在于模拟测试对象。<​​/ p>

1 个答案:

答案 0 :(得分:0)

mock \ spy'd对象设置错误。 它没有在正确的时间和不正确的对象初始化行为;这就是我所观察到的。

所以,它是:

when(spy.shouldPointBeAdded(excludePoints, shape.contains(mock(Point.class)))).thenCallRealMethod();

我将其更改为:

when(spy.shouldPointBeAdded(excludePoints, shape.contains(point)).thenCallRealMethod();

exlcludePoints和shape是传递给设置方法的真实对象,而不是模拟,而point是测试类成员变量。 在使用之前,必要时指定点。

for(Point pointInGrid : buildTenByTenGrid()) {
            point = pointInGrid;
            if(objectUnderTest.shouldPointBeAdded(excludePoints, shape.contains(point))) {
                pointsInShape.add(point);
            }
        }

测试现在按预期工作。

相关问题