我有这样的界面:
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;
}
}发布于 2017-12-09 17:03:59
坦率地说,这个测试并没有增加多少价值。
您的目标应该是验证回购是否包含您通过该方法传递的用户。
假设您在回购上有某种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放在测试方法名称中,尝试通过名称解释bahavior。
https://stackoverflow.com/questions/47730862
复制相似问题