[Start Spring Boot] Test 이용해서 DB에 데이터 추가하기

·2024년 3월 23일
0

Start Spring Boot!

목록 보기
28/53
post-thumbnail

Spring Boot에서 Test

Junit

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

java

  • 다음의 test에 java파일을 이용해서 테스트를 진행한다.

Service 수정 및 테스트 데이터 생성하기

Service

  • TeamService.java
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 데이터 추가하기

  • SsbApplicationTests.java
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을 접속해보자
profile
백엔드 개발자가 꿈인 컴공과

0개의 댓글

관련 채용 정보