테스트의 출발점
데이터베이스를 공유하는 테스트는 앞선 실행이 남긴 레코드 때문에 결과가 달라질 수 있다. Respawn은 다음 검사를 시작하기 전에 지정한 범위의 데이터를 비우는 역할을 한다. 스키마를 매번 새로 만드는 방식과 달리 기존 테이블을 두고 내용을 정리하는 흐름에 쓰인다.
참조 관계와 정리 순서
부모 레코드를 먼저 지우면 외래 키 제약으로 삭제가 막힐 수 있다. Respawn은 데이터베이스 메타데이터에서 관계를 읽고 정리 순서를 계산한다. 준비한 객체가 이 순서를 보관하므로 같은 구조를 반복해서 정리할 때 관계를 매번 다시 분석하지 않는다. 보존해야 할 테이블이나 제외할 스키마도 지정할 수 있다.
격리 범위 정하기
삭제 대상 연결은 실제 서비스와 분리한 테스트용 데이터베이스여야 한다. 병렬 검사가 같은 테이블을 사용하면 한쪽의 정리가 다른 검사의 데이터를 지울 수 있으므로 실행 범위도 나눈다. 구조를 바꾼 뒤에는 정리 객체를 새로 준비하는 편이 안전하다. 필요한 초기 데이터의 생성과 동작 검증은 별도로 설계한다.
관련 문서
NUnit / MSTest / TUnit / AutoFixture