@After每次测试后,删除所有用户--JUnit

时间:2013-06-06 13:14:27

标签: java junit arraylist

我有以下测试将用户添加到列表中:

@Test
public void testTheSizeOfUserListAfterAddingThreeUsers() {
    User james = new User(001, "JamesBond", "JB007", "Admin");
    User billy = new User(002, "BillyBob", "WOOHOONASCAR", null);
    User jane = new User(003, "CaliGurl88", "surfboardz", null);
    manager.addUser(james);
    manager.addUser(billy);
    manager.addUser(jane);
    assertEquals(3, manager.getSize());
    manager.removeUser(james);
    manager.removeUser(billy);
    manager.removeUser(jane);
}

但是,我必须在每次测试后删除每个用户,以便为下一次测试重新开始。

无论如何,我可以使用@After注释删除为每个测试创建的所有用户吗?也许使用for循环?

3 个答案:

答案 0 :(得分:2)

测试不得对另一个测试产生任何影响。最安全的解决方案是每次测试重新创建manager对象@Before

public class MyTest{

    private Manager manager;

    @Before
    public void setUp(){
        manager = new Manager();
    }

    ...

}

但是如果你真的需要在所有测试中使用相同的实例,请确保创建一个非常好的清理方法(@After)。

答案 1 :(得分:1)

将测试对象存储在List中,然后再删除:

public class TestClass{

    private List<User> createdUsers = new ArrayList<>();

    private Manager manager; //instantiate

    @Before
    public void setupUsers(){
        User james = new User(001, "JamesBond", "JB007", "Admin");
        User billy = new User(002, "BillyBob", "WOOHOONASCAR", null);    
        User jane = new User(003, "CaliGurl88", "surfboardz", null);
        createdUsers.add(james);
        createdUsers.add(billy);
        createdUsers.add(jane);
    }

    @After
    public void cleanUsers(){
        for(User createdUser : createdUsers){
            manager.removeUser(createdUser); //but if you test the behaviour of manager, then remove the created instances independently from manager
        }
        createdUsers.clear();
    }
}

答案 2 :(得分:0)

@After注释与每次测试后执行的方法一起使用。在此方法中,您可以执行任何想要清理测试环境的操作。

@After
public void cleanup() {
    // Cleaning code goes here
}

您可以使用所需的名称作为方法名称。

您可以将用户实例保存在测试类的List<User>属性中,然后使用@After方法将其删除。从List列表中删除用户后,请不要忘记从manager删除用户。

public class MyTestClass {

private List<User> users = new ArrayList<User>();

@Test
public void testTheSizeOfUserListAfterAddingThreeUsers() {
    User james = new User(001, "JamesBond", "JB007", "Admin");
    User billy = new User(002, "BillyBob", "WOOHOONASCAR", null);
    User jane = new User(003, "CaliGurl88", "surfboardz", null);
    manager.addUser(james);
    manager.addUser(billy);
    manager.addUser(jane);
    users.add(james);
    users.add(billy);
    users.add(jane);
    assertEquals(3, manager.getSize());
}

@After
public void cleanup() {
    for (User user : users) {
        manager.removeUser(user);
    }
    users.clear();
}
}