Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Mockito:AssertionError期望为True但给出False_Java_Junit_Boolean_Mockito - Fatal编程技术网

Java Mockito:AssertionError期望为True但给出False

Java Mockito:AssertionError期望为True但给出False,java,junit,boolean,mockito,Java,Junit,Boolean,Mockito,似乎当f.isColored()&&fm.isColored()两者同时存在时,该方法返回false,但如果我单独使用它们,该方法将正确返回true 此方法0未通过测试 @Override public boolean colorConstraint(ActionSpace as, FamilyMember fm) { for (FamilyMember f : as.getFamilyMembers()) { if (true &&am

似乎当
f.isColored()&&fm.isColored()
两者同时存在时,该方法返回false,但如果我单独使用它们,该方法将正确返回true

此方法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
    }
@测试
公共无效中立民和Sameowner(){
//给定
列出家庭成员列表;
familyMemberList=Arrays.asList(fm);
当(as.getFamilyMembers())。然后返回(familyMemberList);
/*使用方法1时会对此进行注释*/
//行动空间中的家庭成员是中立的
当(familyMemberList.get(0.isColored())。然后返回(false);
/*使用方法2时会对此进行注释*/
//要放置的fm是彩色的
当(fm.isColored())。然后返回(true);
//什么时候
布尔布尔;
bool=harvestProductionASController.colorConstraint(as,fm);
//然后
assertTrue(bool);//使用方法0时的断言错误
}
将作为零元素fm添加到familyMemberList时

因此,在您的代码中:

when(fm.isColored())。然后返回(false)--对于第一次调用,返回false 当(fm.isColored())。然后返回(true)--对于第二个调用,返回true

fm-这是模拟对象,因为模拟对象mockito的工作原理类似于:如果第一次调用方法,则返回X;如果第二次调用方法,则返回Y。。。。。 这是你的情况,你应用了这种行为

在方法
colorConstraint
中,您必须检查:

if (f.isColored() && fm.isColored()) //this does not work
   return false;
f、 isColored()的值为-false fm.isColored()的结果为-true

所以对于你们的测试,这个方法的结果是错误的

修正:(不要使用相同的对象)

列出家族成员列表;
FamilyMember fmNew=new();
familyMemberList=Arrays.asList(fmNew);
请注意:

改变 if(true&&f.isColored()&&fm.isColored())-->(f.isColored()&&fm.isColored())

if(true&&false&&fm.isColored())-->if(!fm.isColored())


如果(true&&f.isColored()&&true)->如果(f.isColored())

那么您应该进行一些调试。如果在那之后您仍然被卡住,那么请创建一个。您确定:
我不明白为什么:如果(4==4&&FALSE&&TRUE)返回FALSE
??仅当所有参数均为TRUE时,才会返回TRUE;这是
&
而不是
。更新了问题
when(fm.isColored()).thenReturn(false);
if (f.isColored() && fm.isColored()) //this does not work
   return false;
 List<FamilyMember> familyMemberList;
 FamilyMember fmNew= new ();
 familyMemberList = Arrays.asList(fmNew);