gpt4 book ai didi

java - 用于测试创建和异常功能的 Junit 集成测试问题

转载 作者:行者123 更新时间:2023-12-01 16:58:30 25 4
gpt4 key购买 nike

我已经阅读了很多关于集成测试的文章。根据我的理解,我们必须在不使用模拟的情况下进行测试。我需要测试如果大厅已经存在,它应该抛出异常。我正在创建大厅,该大厅又与用户服务层交互。下面的集成测试失败,并在 setupLobby 方法中的 userService.createUser(testUser) 处出现空指针异常。

我在这个集成测试中做错了什么?

集成测试代码 -

public class LobbyServiceIntegrationTest {

LobbyService lobbyService;
UserService userService;

private User testUser;
private Lobby lobbyTest;
private Long lobbyId;
private List<User> userList = new ArrayList<>();

@BeforeEach
public void setupLobby(){

testUser = new User();
testUser.setName("testName");
testUser.setUsername("testUsername");

testUser = userService.createUser(testUser);

lobbyTest = new Lobby();
lobbyTest.setName("testLobby");
lobbyTest.setHostPlayerId(testUser.getId());

lobbyId = lobbyService.createLobby(lobbyTest);


}

@Test
public void createdLobbyExist_Exception(){

Lobby newLobby = new Lobby();
newLobby.setName("testLobby");
newLobby.setHostPlayerId(1L);

assertThrows(LobbyException.class, ()->lobbyService.createLobby(newLobby));
}

}

我想测试的功能

    public Long createLobby(Lobby newLobby){

checkIfLobbyExist(newLobby);
newLobby.getPlayerIds().add(newLobby.getHostPlayerId());

newLobby = lobbyRepository.save(newLobby);

User user = userRepository.getOne(newLobby.getHostPlayerId());
user.setLobbyId(newLobby.getId());
userRepository.save(user);

return newLobby.getId();

}

并创建用户

    public User createUser(User newUser) {

checkIfUserExists(newUser);

newUser.setToken(UUID.randomUUID().toString());
newUser.setStatus(UserStatus.OFFLINE);
newUser.setCreationDate(new java.sql.Date(Calendar.getInstance().getTimeInMillis()));


// saves the given entity but data is only persisted in the database once flush() is called
newUser = userRepository.save(newUser);
userRepository.flush();

log.debug("Created Information for User: {}", newUser);
return newUser;
}

最佳答案

您的 userService 对象和obbyService 根本没有初始化,这就是您捕获空指针异常的原因。

如果您使用Spring框架,则在类顶部添加@SpringBootTest注释+ @Autowired用于userService和lobbyService。

关于java - 用于测试创建和异常功能的 Junit 集成测试问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61550590/

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