Spring Boot에서 Test
Junit
- Java에서 독립된 단위 테스트를 지원해주는 프레임워크
- Assert를 이용해서 값을 검증
- @Test를 독립적으로 실행한다.
java

- 다음의 test에 java파일을 이용해서 테스트를 진행한다.
Service 수정 및 테스트 데이터 생성하기
Service
package com.chan.ssb.player;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class PlayerService {
private final PlayerRepository playerRepository;
public PlayerService(PlayerRepository playerRepository) {
this.playerRepository = playerRepository;
}
public PlayerDTO getPlayerById(long id) {
return PlayerDTO.fromEntity(playerRepository.findById(id).orElse(null));
}
public List<PlayerDTO> getAllPlayers() {
List<Player> players = playerRepository.findAll();
List<PlayerDTO> returnPlayers = players.stream().map(PlayerDTO::fromEntity).toList();
return returnPlayers;
}
public PlayerDTO createPlayer(PlayerDTO playerDTO) {
Player player = new Player(playerDTO.getId(), playerDTO.getName(), playerDTO.getNumber(), playerDTO.getTeam());
return PlayerDTO.fromEntity(playerRepository.save(player));
}
public List<PlayerDTO> createPlayers(List<PlayerDTO> playerDTOList) {
List<Player> players = playerDTOList.stream().map(player -> new Player(player.getId(), player.getName(), player.getNumber(), player.getTeam())).toList();
return playerRepository.saveAll(players).stream().map(PlayerDTO::fromEntity).toList();
}
public PlayerDTO updatePlayer(long id, PlayerDTO playerDTO) {
Player player = new Player(id, playerDTO.getName(), playerDTO.getNumber(), playerDTO.getTeam());
return PlayerDTO.fromEntity(playerRepository.save(player));
}
public void deletePlayer(long id) {
playerRepository.deleteById(id);
}
}
Test로 DB 데이터 추가하기
package com.chan.ssb;
import com.chan.ssb.player.PlayerDTO;
import com.chan.ssb.player.PlayerService;
import com.chan.ssb.team.Team;
import com.chan.ssb.team.TeamDTO;
import com.chan.ssb.team.TeamService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class SsbApplicationTests {
@Autowired
private TeamService teamService;
@Autowired
private PlayerService playerService;
@Test
void testTeamAndPlayerService() {
TeamDTO team1 = new TeamDTO(0, "Team1", "City1", 1);
TeamDTO createdTeam = teamService.createTeam(team1);
TeamDTO team2 = new TeamDTO(0, "Team2", "City2", 2);
TeamDTO createdTeam2 = teamService.createTeam(team2);
PlayerDTO player1 = new PlayerDTO(0L, "Player1", 1, new Team(createdTeam.getId(), createdTeam.getName(), createdTeam.getCity(), createdTeam.getChampionships()));
PlayerDTO player2 = new PlayerDTO(0L, "Player2", 2, new Team(createdTeam.getId(), createdTeam.getName(), createdTeam.getCity(), createdTeam.getChampionships()));
PlayerDTO player3 = new PlayerDTO(0L, "Player3", 3, new Team(createdTeam2.getId(), createdTeam2.getName(), createdTeam2.getCity(), createdTeam2.getChampionships()));
PlayerDTO player4 = new PlayerDTO(0L, "Player4", 4, new Team(createdTeam2.getId(), createdTeam2.getName(), createdTeam2.getCity(), createdTeam2.getChampionships()));
PlayerDTO createdPlayer1 = playerService.createPlayer(player1);
PlayerDTO createdPlayer2 = playerService.createPlayer(player2);
PlayerDTO createdPlayer3 = playerService.createPlayer(player3);
PlayerDTO createdPlayer4 = playerService.createPlayer(player4);
}
}
- @Autowired: 의존성을 주입하는 방법
- 테스트를 실행하고 h2-console을 접속해보자
