Test Fixture
- 여러 테스트에서 같은 데이터를 사용해야 할 때, 코드의 중복을 없애주는 역할을 하는 테스트 전용 데이터
@org.junit.Before
로 메소드에 주석을 달고 해당 메소드의 변수를 초기화한다.@Before
,@BeforeClass
@org.junit.After
로 메서드에 주석을 달아 setUp 에서 할당한 영구 리소스를 해제한다.@After
,@AfterClass
어떨 때 사용하는지 예시
- 목 또는 가짜 객체의 세팅이나 생성 그리고 삽입할 데이터의 준비
- 구체적이며 알고있는 데이터를 지닌 데이터베이스 로딩
- 테스트 픽스처를 만들어내는 특정 파일들을 복사하면 특정 상태로 초기화된 객체들 생성됨.
java-test-fixture
- 테스트 픽스처는 일반적으로 테스트 중인 코드를 설정하거나 구성 요소 테스트를 용이하게 하는 유틸리티를 제공하는 데 사용된다.
- Java 프로젝트에서는 또는 플러그인 java-test-fixtures외에 플러그인을 적용하여 테스트 픽스처 지원을 활성화할 수 있다.
1
2
3
4
5
6
7
8
9
lib/build.gradle
plugins {
// A Java Library
id 'java-library'
// which produces test fixtures
id 'java-test-fixtures'
// and is published
id 'maven-publish'
}
test fixture 사용 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Simpsons {
private static final Person HOMER = new Person("Homer", "Simpson");
private static final Person MARGE = new Person("Marjorie", "Simpson");
private static final Person BART = new Person("Bartholomew", "Simpson");
private static final Person LISA = new Person("Elisabeth Marie", "Simpson");
private static final Person MAGGIE = new Person("Margaret Eve", "Simpson");
private static final List<Person> FAMILY = new ArrayList<Person>() ;
public static Person homer() { return HOMER; }
public static Person marge() { return MARGE; }
public static Person bart() { return BART; }
public static Person lisa() { return LISA; }
public static Person maggie() { return MAGGIE; }
// ...
build.gradle
1
2
3
4
5
6
dependencies {
implementation(project(":lib"))
testImplementation 'junit:junit:4.13'
testImplementation(testFixtures(project(":lib")))
}
reference
Gradle의 java-test-fixture 플러그인 junit4 cookbook Test fixtures