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

5hcedyr0  于 2021-06-30  发布在  Java
关注(0)|答案(3)|浏览(264)

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

@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循环?

7rtdyuoh

7rtdyuoh1#

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

public class MyTest{

    private Manager manager;

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

    ...

}

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

uujelgoq

uujelgoq2#

将测试对象存储在列表中,然后删除:

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();
    }
}
hkmswyz6

hkmswyz63#

这个 @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();
}
}

相关问题