Java:测试通过接口传递的具体类,Mockito,JUnit
我有这个界面:Java:测试通过接口传递的具体类,Mockito,JUnit,java,unit-testing,junit,interface,mockito,Java,Unit Testing,Junit,Interface,Mockito,我有这个界面: public interface RepositoryUserDB { User createUser(User user); } 以及实现到以下类中的方法: public class MemoryUserDB implements RepositoryUserDB{ Map<String, User> repo = new HashMap<>(); @Override public User createUser(
public interface RepositoryUserDB {
User createUser(User user);
}
以及实现到以下类中的方法:
public class MemoryUserDB implements RepositoryUserDB{
Map<String, User> repo = new HashMap<>();
@Override
public User createUser(User user) {
return repo.put(user.getUsername(), user);
}
}
我怎样才能做到呢
谢谢
编辑:
类用户:
public class User {
private String username;
private String password;
private String dateOfBirth;
private String SSN;
public User(String username, String password, String dateOfBirth, String SSN) {
this.username = username;
this.password = password;
this.dateOfBirth = dateOfBirth;
this.SSN = SSN;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public String getDateOfBirth() {
return dateOfBirth;
}
public String getSSN() {
return SSN;
}
}
坦率地说,这项测试没有增加多少价值 您的目标是验证repo是否包含您通过该方法传递的用户 假设您在该repo上有某种
getByUserName
方法,并且用户类正确定义了equals
和hashCode
,您可以进行如下测试:
private MemoryUserDB memoryUserDB;
@Test
public void shouldCreateUser(){
// Arrange
User user = new User("luca", "antico", "23.11.2011", "112");
// Act
User addedUser = memoryUserDB.createUser(user);
// Assert
assertEquals(user, addedUser);
assertEquals(user, memoryUserDB.getByUsername("luca");
}
另外,不要将
test
放在测试方法名称中,试着通过名称来解释错误。您的存储库行为异常。我希望它返回我传递到save
中的东西的一些包装或代理实例。而是返回绑定到该键的上一个实例,或null
。非常奇怪。@BoristheSpider:这是一个界面我有这个报告java.lang.AssertionError:应该是app.model。User@41975e01实际值:null
尝试调试并查看问题所在。。这就是单元测试对DDEDUSER结果null的要求,无论如何,谢谢你,我将尝试修复它。。。知道如何组织测试很重要。也许我理解了为什么第二个变量为null,因为这是一个映射,我们不能添加两个具有相同值的键。那么,我现在要做什么?
private MemoryUserDB memoryUserDB;
@Test
public void shouldCreateUser(){
// Arrange
User user = new User("luca", "antico", "23.11.2011", "112");
// Act
User addedUser = memoryUserDB.createUser(user);
// Assert
assertEquals(user, addedUser);
assertEquals(user, memoryUserDB.getByUsername("luca");
}