当我测试默认缺点时。在这样的课程中:
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工作正常)
答案 0 :(得分:4)
您没有共享足够多的Man
代码来给出明确的答案,但是从错误消息(和一些常识)来看,我猜想getName()
返回了String
并且getBorn()
返回该人出生的年份的int
。假设这些只是返回数据成员的简单getter,除非明确初始化,否则String
(或其他任何对象)的默认值为null
,而原语为{{1 }}是int
。
长话短说,您需要为每个获取方法获得正确的默认值:
0
答案 1 :(得分:1)
要声明空值时,应使用
assertNull()
另外,您将“ new Man()”分配给“ m”变量,但在断言中您使用“ e”变量。