Java JUnit布尔测试似乎不正确
只是在一个简单的方法上编写一个简单的JUnit测试,并认为有一些问题,我可能忽略了一些显而易见的东西。我在这里有一个类,在JUnit测试中,我只是在底部测试这个方法Java JUnit布尔测试似乎不正确,java,unit-testing,junit,Java,Unit Testing,Junit,只是在一个简单的方法上编写一个简单的JUnit测试,并认为有一些问题,我可能忽略了一些显而易见的东西。我在这里有一个类,在JUnit测试中,我只是在底部测试这个方法 public class BudgetRecordItem { private boolean rowChangeFlag; public boolean isRowChangeFlag() { return rowChangeFlag; } public void setRow
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时设置它。因此,由于我从未将其初始化为false,因此它不应具有fasle的值
但是如果我在测试调用中更改null的值,测试就会通过,这意味着它实际上返回了一个假值
有什么想法吗?或者我只是大脑放屁?你把
boolean
原语和boolean
对象搞混了<代码>基本体如布尔
不能为空,布尔
自动初始化为假
基本体布尔
默认为假不为空。啊,明白了。谢谢。是的@gtgaxiola也指出了这一点。谢谢你,我早该知道的!