본문 바로가기

cs(with 매일메일)

[260305목] 테스트 격리란 무엇인가요?

각 테스트가 서로 독립적으로 실행되도록 보장하는것. 

어떤 테스트가 실행되더라도 다른 테스트의 결과나 상태에 영향을 주거나 받지 않아야 한다. 

 

Spring에서 같은 데이터베이스를 사용하는 테스트는 어떻게 격리할 수 있을까?

@DirtiesContext 어노테이션을 사용하면 테스트마다 새로운 애플리케이션 컨텍스트를 로드하여 안전한 격리를 보장

@Sql 어노테이션을 사용하면 테스트 실행 전후에 특정 SQL스크립트를 실행할 수 있다. 이때 TRUNCATE DDL을 사용하여 테이블 자체를 비울 수 있다. 

@Transactional 어노테이션을 사용하면 테스트가 실행된 후 트랜잭션을 롤백하여 데이터베이스 상태를 원래대로 유지할 수 있다.