Java 方法返回布尔形式xor

Java 方法返回布尔形式xor,java,boolean-logic,xor,Java,Boolean Logic,Xor,使用java,我有一个方法: boolean shouldPointBeAdded(boolean excludePoint, shapeContainsPoint){ return excludePoint ^ shapeContainsPoint; } 用作: if(shouldPointBeAdded(excludePoint, shape.contains(point)) 这被用作if条件,但是它的执行方式与我直接作为if条件执行XOR的方式不同 注意:我已经将XOR封装在一

使用java,我有一个方法:

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

if(shouldPointBeAdded(excludePoint, shape.contains(point))
这被用作if条件,但是它的执行方式与我直接作为if条件执行XOR的方式不同

注意:我已经将XOR封装在一个用于测试和可读性的方法中

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

想法

谢谢

更新:
将shouldPointBeAdded()设置为静态可以解决感知到的问题,因此我认为问题在于模拟测试对象。

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

因此,它是:

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);
            }
        }

测试正在按预期工作。

这是如何编译的?在
shapeContainsPoint
之前需要
boolean
。您的代码无效。此外,您不使用正文中的方法参数。我使用了您的方法(纠正了其他人已经指出的错误),并进行了成功的测试。请更正您的代码,如果仍然失败,请向我们展示您的单元测试。boolean1和boolean2是在哪里定义的,而不是这些,您应该使用传递给方法的参数。boolean1和boolean2是一个错误。。。