JUnit测试删除方法将对象设置为null后,该对象不为null

时间:2016-03-05 11:31:48

标签: java junit

我在Administrator.java中编写了一个方法deleteProject(Project project),它将项目设置为null。在此之后,我尝试编写一个调用deleteProject(Project项目)-method的测试方法,并检查Object项目是否== null。不是这种情况。我已将3个system.out.println(项目)放入方法中。如果查看输出,项目在deleteProject(项目项目)中设置为null,但由于某种原因,它仍然在AdministratorTest中打印。

我无法弄清楚为什么项目不会保持为空。

AdministratorTest.java

@Before
public void setUp() throws Exception {
    admin1 = new Administrator("Sponge", "Bob", "Squarepants", "Spongy");       
    project = admin1.createProject(new VersionID(2, 3), "ProjectX", "Secret", new Date(93, 10, 17));        
}

@After
public void tearDown() throws Exception {
    admin1 = null;      
    project = null;
}

@Test
public void testDeleteProject() {
    assertEquals("2.3", project.getVersion().toString());
    assertEquals("ProjectX", project.getName());
    assertEquals("Secret", project.getDescription());
    assertEquals("Wed Nov 17 00:00:00 CET 1993", project.getStartDate().toString());
    admin1.deleteProject(project);
    System.out.println(project);
    assertNull(project);
}

Administrator.java

public void deleteProject(Project project) {    
    System.out.println(project);        
    project = null;
    System.out.println(project);        
}

输出

model.Project@6d5380c2
null
model.Project@6d5380c2

1 个答案:

答案 0 :(得分:1)

在方法deleteProject中将参数项目设置为null不会对您为该方法提供的对象执行任何操作。它只是更改了deleteProject结尾处超出范围的参数。