JUnit 和检查字段是否为空

JUnit and checking fields for null

当我测试默认缺点时。在这样的 class 中:

public class Man {
    public Man(){}

@Test
public void defConstructorTest() {
    Man m = new Man();
    assertEquals(0, m.getName());
    assertEquals(0, m.getBorn());

来消息:

test failed expected: 0 but was: null

当我这样更改代码时:

@Test
public void defConstructorTest() {
    Man m = new Man();
    assertEquals(null, m.getName());
    assertEquals(null, m.getBorn());

测试再次失败并显示此消息:

expected: null but was: 0

有人可以解释为什么我会收到此错误吗? (吸气剂工作正常)

当你想断言空值时,你应该使用

assertNull()

此外,您将 "new Man()" 分配给 "m" 变量,但在断言中您使用 "e" 变量。

您没有分享足够的 Man 代码来给出明确的答案,但根据错误消息(和一些常识)我猜 getName() return一个 StringgetBorn() return 一个 int 这个人的出生年份。假设这些只是 return 数据成员的简单 getter,String(或任何其他对象,就此而言)的默认值是 null,除非它被显式初始化,原语 int 的默认值是 0.

长话短说,您需要为每个 getter:

期望正确的默认值
@Test
public void defConstructorTest() {
    Man m = new Man();
    assertNull(m.getName());
    assertEquals(0, m.getBorn());
}