我有以下测试将用户添加到列表中:
@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循环?
答案 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();
}
}