【发布时间】:2017-07-09 14:51:41
【问题描述】:
似乎当两个f.isColored() && fm.isColored() 在一起时,该方法返回false,但如果我分别使用它们,该方法返回正确。
这个方法0没有通过测试
@Override
public boolean colorConstraint(ActionSpace as, FamilyMember fm) {
for (FamilyMember f : as.getFamilyMembers()) {
if (true && f.isColored() && fm.isColored()) //this does not work
return false;
}
return true;
}
使用此方法测试通过 1
@Override
public boolean colorConstraint(ActionSpace as, FamilyMember fm) {
for (FamilyMember f : as.getFamilyMembers()) {
if (true && false && fm.isColored())
return false;
}
return true;
}
使用此方法测试通过 2
@Override
public boolean colorConstraint(ActionSpace as, FamilyMember fm) {
for (FamilyMember f : as.getFamilyMembers()) {
if (true && f.isColored() && true)
return false;
}
return true;
}
测试方法
@Test
public void neutralFMInASAndSameOwner() {
//given
List<FamilyMember> familyMemberList;
familyMemberList = Arrays.asList(fm);
when(as.getFamilyMembers()).thenReturn(familyMemberList);
/*this is commented when using method 1 */
//family member in action space is neutral
when(familyMemberList.get(0).isColored()).thenReturn(false);
/*this is commented when using method 2 */
//fm to place is colored
when(fm.isColored()).thenReturn(true);
//when
Boolean bool;
bool = harvestProductionASController.colorConstraint(as, fm);
//then
assertTrue(bool); //AssertionError when using method 0
}
【问题讨论】:
-
那你应该做一些调试。如果你在那之后仍然卡住,那么请创建一个minimal test-case。
-
你确定:
I don't understand why: IF( 4 == 4 && FALSE && TRUE) is returning FALSE??只有当所有参数都为 TRUE 时才会返回 TRUE;这是&不是|。 -
更新问题
标签: java junit boolean mockito