토이 프로젝트 스터디 #10
- 스터디 진행 날짜 : 6/18
- 스터디 작업 날짜 : 6/16 ~ 6/18
토이 프로젝트 진행 사항
- 테스트 코드 작성
Auth
Account
TestContainers
적용
내용
테스트 코드 작성
- 현재 작성한 코드에 대한 테스트 코드 작성 완료
TestContainers
적용
@SpringBootTest
@Testcontainers
@ActiveProfiles("test")
class BoardApplicationTests {
@Container
static PostgreSQLContainer postgreSQLContainer =
new PostgreSQLContainer("postgres")
.withDatabaseName("board_test");
@Test
void contextLoads() {
}
}
- 테스트용으로 별도의
인메모리 DB
를 사용하지 않고 Docker
를 통해 직접 사용하고 있는 postgreSQL
을 테스트 용도로 사용
[main] DEBUG 🐳 [testcontainers/ryuk:0.3.3] - Starting container: testcontainers/ryuk:0.3.3
[main] DEBUG 🐳 [testcontainers/ryuk:0.3.3] - Trying to start container: testcontainers/ryuk:0.3.3 (attempt 1/1)
[main] DEBUG 🐳 [testcontainers/ryuk:0.3.3] - Starting container: testcontainers/ryuk:0.3.3
[main] INFO 🐳 [testcontainers/ryuk:0.3.3] - Creating container for image: testcontainers/ryuk:0.3.3
REPOSITORY TAG IMAGE ID CREATED SIZE
testcontainers/ryuk 0.3.3 146fb8d54138 8 months ago 11.5MB
- 테스트 실행 시
docker
에서 testcontainers
가 실행되는 것을 확인할 수 있음
@Transactional
@SpringBootTest
@Testcontainers
@ActiveProfiles("test")
@DisplayName("AccountRepository 테스트")
@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class)
class AccountRepositoryTest {
@Autowired
AccountRepository accountRepository;
@Test
void save_테스트() {
Account account = AccountEntityFactory.createAccount("test@email.com", "nickname", "password");
Account saveAccount = accountRepository.save(account);
assertEquals(account.getEmail(), saveAccount.getEmail());
}
@Test
void existsByNickname_테스트() {
Account account = AccountEntityFactory.createAccount("test@email.com", "nickname", "password");
accountRepository.save(account);
boolean result = accountRepository.existsByNickname("nickname");
assertTrue(result);
}
@Test
void existsByEmail_테스트() {
Account account = AccountEntityFactory.createAccount("test@email.com", "nickname", "password");
accountRepository.save(account);
boolean result = accountRepository.existsByEmail("test@email.com");
assertTrue(result);
}
}
- 이를 통해 환경에 구애받지 않고 실제 사용하고 있는
DB
를 통해 테스트 할 수 있는 Repository
관련 테스트 코드 작성 가능