java为什么这会给我AssertationError?
我有以下测试:
@Test
public void deleteUser(){
User user = new User("admin","admin");
service.createUser(user);
service.deleteUser(1);
assertTrue("Check that user is deleted: ", user.getId() < 1);
}
但它给了我AssertationError。 为什么我不能这样做? 我创建了我的用户,然后想测试我是否能够删除新创建的用户
我的delete方法只是从hashmap中删除用户
Map<Long, User> users = new HashMap<Long, User>();
protected static long nextId = 0;
@Override
public long createUser(User user) {
user.setId(getNextId());
users.put(user.getId(), user);
return user.getId();
}
@Override
public void deleteUser(long id) {
users.remove(id);
}
谁能给我解释一下吗
# 1 楼答案
您的测试没有任何意义——您想检查用户是否已从服务中删除,但您正在检查用户对象的Id属性的值(该属性为null,或设置为某个值——您没有提供任何代码)。正如一些用户已经建议的那样,您需要检查用户是否真的包含在您的服务中。另外,您是否在getNextId()方法中执行了一些操作?如果这只是nextId变量的getter,那么您创建的每个用户的Id都将设置为0(但也许您希望这样,谁知道呢)。getNextId中是否有一些代码实际将值设置为其他值
# 2 楼答案
与其访问
User
对象,您仍然有对该对象的引用(与它是否被删除无关),您应该实现一个方法,检查用户是否存在于服务变量的类中:然后这样断言:
# 3 楼答案
从
Map
删除用户时,对user.id
不做任何操作。这就是你的断言失败的原因删除时更改id的一种方法
另一种(也是更好的)方法是改变测试: