我有这个接口:
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;
}
}
坦率地说,该测试不会添加太多值。
您的目标是验证回购是否包含您通过该方法传递的用户。
假设您在该存储库上有某种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
放入测试方法名称中,请尝试通过名称解释巴哈维尔。