본 글은 우아한 테크코스 프리코스 2주차 미션 중 공부한 내용을 기록한 것이다.
-> 우아한 테크코스 프리코스 2주차 미션 java-baseball
-> 필자가 제출한 코드
-> 2주차 미션 회고
| 메소드 | 반환 타입 | 반환 내용 |
|---|---|---|
| getDisplayName() | String | @DisplayName과 동일한 값 |
| getTags() | Set< String > | @Tag 의 배열 값 |
| getTestClass() | Optional<Class<?>> | 테스트가 수행되고 있는 클래스 |
| getTestMethod() | Optional | 테스트가 수행되고 있는 함수 |
@Test
void exampleTest(TestInfo testInfo) {
System.out.prinln(testInfo.getDisplayName());
@DisplayName("숫자 관련 기능 테스트")
public class numberTest() {
@Test
@DisplayName("숫자 카운트 기능 테스트")
void countNumberTest(){
...
클래스 혹은 메소드 이름을 변형시키는 어노테이션.
DisplayNameGenerator.Standard.class (Default) : 기존 클래스, 메소드 이름을 그대로 활용.
DisplayNameGenerator.Simple.class : 괄호 제외.
DisplayNameGenerator.ReplaceUnderscores.class : 언더스코어(_)를 공백으로 변경.
DisplayNameGenerator.IndicativeSentences.class : 클래스이름 + 구분자(", ") + 메소드이름 으로 바꿈.
@DisplayName("예시 테스트")
public class exampleTest() {
@Nested
@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class)
class example_Test1() {
@Test
void first_example_Test() {
...
해당 어노테이션을 통해 구분자를 커스텀할 수 있다. 파라미터는 다음과 같다.
separator : 구분자 문자열. (Default : ", ")
generator : DisplayNameGenerator.~~.class
@IndicativeSentencesGeneration(separator = " -> ", generator = DisplayNameGenerator.ReplaceUnderscores.class)
public class exampleTest() {
...
(@RepeatedTest는 @Test 를 안붙여도 된다.)
value : 반복 횟수. 필수 입력
name : 반복할 때 나타나는 테스트 이름.
name 파라미터에 RepeatedTest.~~ 로 이름을 설정할 수 있으며, 옵션은 다음과 같다.
| 변수 | 타입 | 내용 |
|---|---|---|
| DISPLAY_NAME_PLACEHOLDER | String | @DisplayName 값 |
| SHORT_DISPLAY_NAME | String | 반복할 때 표시되는 테스트 이름 == @RepeatedTest 의 name 파라미터 값 |
| LONG_DISPLAY_NAME | String | DISPLAY_NAME_PLACEHOLDER + " :: " + SHORT_DISPLAY_NAME |
| TOTAL_REPETITIONS_PLACEHOLDER | String | 총 반복 횟수 |
| CURRENT_REPETION_PLACEHOLDER | String | 현재 반복 횟수 |
@RepeatedTest(value = 5, name = RepeatedTest.LONG_DISPLAY_NAME)
void repeatedTest() {
...
| 메소드 | 반환 타입 | 내용 |
|---|---|---|
| getCurrentRepetition() | int | 현재 반복 횟수 |
| getTotalRepetition() | int | 총 반복 횟수 |
@RepeatedTest(value = 5, name = RepeatedTest.LONG_DISPLAY_NAME)
void repeatedTest(RepeatedInfo repeatedInfo) {
System.out.println(repeatedInfo.getCurrentRepetition() + " / " + repeatedInfo.getTotalRepetition());
}
매개변수(파라미터)를 넣어서 테스트를 수행할 수 있다.
해당 어노테이션은 단독으로는 사용할 수 없다. 어떤 파라미터를 넣어줄 건지에 대해 지정해주어야 한다.
@ValueSource : 어노테이션의 매개변수에 특정 타입의 배열에 값을 넣어 넘겨주면, 해당 값들이 하나씩 테스트 메소드의 매개변수에 들어간다.
@ParameterizedTest
@ValueSource(ints = {1, 2, 3})
void exampleTest(int value) {
System.out.println(value);
}
@NullSource : 메소드 매개변수에 null을 넣어준다. 메소드 매개변수가 primitive type으로 설정되어 있으면 안된다.
@EmptySource : 메소드 매개변수에 빈 값 객체를 넣어준다.
@NullAndEmptySource : @NullSource와 @EmptySource를 합친 것.
@EnumSource : Enum에 정의된 상수들에 대해 테스트할 수 있다.
그 외 @MethodSource, @CvsSource, @CvsFileSource, @ArgumentSource가 있으며, 필요할 시 찾아보면 좋을 것 같다.