gpt4 book ai didi

Java:测试通过 Interface、Mockito、JUnit 传递的具体类

转载 作者:行者123 更新时间:2023-11-30 02:17:53 24 4
gpt4 key购买 nike

我有这个界面:

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());
}

我怎样才能实现它?

谢谢

编辑:

类(class)用户:

 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;
}
}

最佳答案

坦率地说,该测试并没有增加太多值(value)。

您的目标应该是验证存储库是否包含您通过该方法传递的用户。

假设您在该存储库上有某种 getByUserName 方法,并且 User 类已正确定义 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 放在测试方法名称中,尝试通过名称来解释行为。

关于Java:测试通过 Interface、Mockito、JUnit 传递的具体类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47730862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com