Java:测试通过接口,Mockito,Junit进行的混凝土类



我有这个接口:

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方法,并且用户类具有equalshashCode正确定义,则可以进行这样的测试:

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放入测试方法名称中,请尝试通过名称解释巴哈维尔。

相关内容

  • 没有找到相关文章

最新更新