JUnit布尔测试显示不正确

时间:2014-07-29 14:59:59

标签: java unit-testing junit

只是在一个简单的方法上编写一个简单的JUnit测试,并认为存在某种问题,我可能会忽略一些明显的东西。所以我在这里有这个类,在JUnit测试中,我只是测试@底部的方法。

public class BudgetRecordItem {
    private boolean rowChangeFlag;  

    public boolean isRowChangeFlag() {
        return rowChangeFlag;
    }
    public void setRowChangeFlag(boolean rowChangeFlag) {
        this.rowChangeFlag = rowChangeFlag;
    }

    public void rowChangeFlag(boolean rowChange){
        if(rowChange){
            this.setRowChangeFlag(true);
        }
    }
}

这里是JUnit测试类

public class BudgetRecordItemTest {

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
    }

    @Before
    public void setUp() throws Exception {
    }

    @After
    public void tearDown() throws Exception {
    }

    @Test
    public void testRowChangeFlag(){
        BudgetRecordItem bri = new BudgetRecordItem();
        bri.rowChangeFlag(false);
        assertEquals(null,bri.isRowChangeFlag());
    }

}

我认为(根据我的理解),因为我从未将布尔值rowChangeFlag初始化为false,所以如果我根据主类中的方法调用JUnit测试中的方法,其值为false只有当rowChangeFlag为true时才应该设置它。所以,因为我从来没有将它初始化为假它不应该有一个fasle值。

但是如果我在测试调用中更改null的值,则Test传递意味着它实际上返回了一个false值

任何想法或我只是大脑放屁?

1 个答案:

答案 0 :(得分:3)

您将boolean原语与Boolean个对象混淆。 primitives之类的boolean不能为空,boolean会自动初始化为false