方法 return 布尔形式异或
method return boolean form xor
使用java,我有一个方法:
boolean shouldPointBeAdded(boolean excludePoint, shapeContainsPoint){
return excludePoint ^ shapeContainsPoint;
}
用作:
if(shouldPointBeAdded(excludePoint, shape.contains(point))
这用作 if 条件,但它的执行方式与我直接作为 if 条件执行 XOR 的方式不同。
注意:为了测试和可读性,我将 XOR 封装在一个方法中。
当 运行 单元测试用例时,断言在使用方法 shouldPointBeAdded() 时不 return 正确的值,但是当 XOR 时它们 return 正确的值直接在if条件中使用。
想法??
谢谢。
更新:
使 shouldPointBeAdded() 静态化解决了感知到的问题,所以我认为问题在于测试对象的模拟。
mock \ spy'd 对象设置不正确。
它没有在正确的时间用不正确的对象初始化行为;这是我根据观察得出的结论。
所以,它是:
when(spy.shouldPointBeAdded(excludePoints, shape.contains(mock(Point.class)))).thenCallRealMethod();
我改成:
when(spy.shouldPointBeAdded(excludePoints, shape.contains(point)).thenCallRealMethod();
exlcludePoints 和 shape 是真实对象,不是模拟对象,它们被传递到设置方法中,point 是一个测试 class 成员变量。
点在使用前根据需要分配。
for(Point pointInGrid : buildTenByTenGrid()) {
point = pointInGrid;
if(objectUnderTest.shouldPointBeAdded(excludePoints, shape.contains(point))) {
pointsInShape.add(point);
}
}
测试现在按预期工作。
使用java,我有一个方法:
boolean shouldPointBeAdded(boolean excludePoint, shapeContainsPoint){
return excludePoint ^ shapeContainsPoint;
}
用作:
if(shouldPointBeAdded(excludePoint, shape.contains(point))
这用作 if 条件,但它的执行方式与我直接作为 if 条件执行 XOR 的方式不同。
注意:为了测试和可读性,我将 XOR 封装在一个方法中。
当 运行 单元测试用例时,断言在使用方法 shouldPointBeAdded() 时不 return 正确的值,但是当 XOR 时它们 return 正确的值直接在if条件中使用。
想法??
谢谢。
更新: 使 shouldPointBeAdded() 静态化解决了感知到的问题,所以我认为问题在于测试对象的模拟。
mock \ spy'd 对象设置不正确。 它没有在正确的时间用不正确的对象初始化行为;这是我根据观察得出的结论。
所以,它是:
when(spy.shouldPointBeAdded(excludePoints, shape.contains(mock(Point.class)))).thenCallRealMethod();
我改成:
when(spy.shouldPointBeAdded(excludePoints, shape.contains(point)).thenCallRealMethod();
exlcludePoints 和 shape 是真实对象,不是模拟对象,它们被传递到设置方法中,point 是一个测试 class 成员变量。 点在使用前根据需要分配。
for(Point pointInGrid : buildTenByTenGrid()) {
point = pointInGrid;
if(objectUnderTest.shouldPointBeAdded(excludePoints, shape.contains(point))) {
pointsInShape.add(point);
}
}
测试现在按预期工作。