我有这个界面:
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);
}
}
目标是测试方法。我开始写这个,但我认为这不正确:
@Test
public void testCreateUser(){
User result = new User("luca", "antico", "23.11.2011", "112");
Assert.assertEquals("luca", result.getUsername());
}
我怎样才能完成它?
由于
编辑:
班级用户:
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;
}
}
答案 0 :(得分:2)
坦率地说,该测试并没有增加太多的价值。
您的目标是验证回购是否包含您通过该方法的用户。
假设您在该repo上有某种getByUserName
方法,并且User类已正确定义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
放在测试方法名称中,尝试通过名称解释行为。