JUnit和检查字段是否为空

时间:2019-01-20 16:03:15

标签: java junit constructor default-constructor

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

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

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

2 个答案:

答案 0 :(得分:4)

您没有共享足够多的Man代码来给出明确的答案,但是从错误消息(和一些常识)来看,我猜想getName()返回了String并且getBorn()返回该人出生的年份的int。假设这些只是返回数据成员的简单getter,除非明确初始化,否则String(或其他任何对象)的默认值为null,而原语为{{1 }}是int

长话短说,您需要为每个获取方法获得正确的默认值:

0

答案 1 :(得分:1)

要声明空值时,应使用

assertNull()

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