@Test -> 이걸 반드시 붙여야 테스트 진행 반드시 void형
@Display -> 해당 테스트의 이름을 나타내준다.
@Nested -> 이걸 붙여야 중첩클래스 내부에 있는것으로 인식되며 테스트 메서드로서의 역할을 함
@Disabled -> 이걸 붙여줘야 테스트를 안하겠다는 의미
assertEquals(expected,actual) 두 값이 같은지 비교 :: if문 안쓰고 그냥 쌩으로 저렇게 쓰는거
다만 assertEquals 는 해당 클래스 내의 equals를 사용하기 때문에 정의를 해주고 사용해야 된다.
assertEquals(expected, actual, "두 값이 일치하지 않습니다.");
assertNotEquals(expected,actual,"두 값이 다르다면 성공")
assertSame(expected, actual) 두 객체가 같은 객체인지 비교
assertThrows(Exception.class, this::causeException); 특정예외가 발생한다면 성공
assertDoesNotThrow(executable) 특정예외가 발생하지 않으면 성공
assertDoesNotThrow(()-> {
final var number = Integer.valueOf(0x80000000);
});
assertAll(
() -> assertEquals(3, 1 + 2),
() -> assertEquals(5, 2 + 3),
() -> assertEquals(21, 7 * 3),
() -> assertEquals(16, 7 * 3 ^ 5),
() -> assertEquals(5, 7 * 3 / 5 + 33 / 21),
() -> assertEquals(22, 33 * 3 / 5 + 7 / 2),
() -> assertEquals(23, 33 * 3 / 5 + 7 / 2 + 1)
);
@ParameterizedTest
@ValueSource(ints ={1,2,3,4})
void ValueSource_애노테이션을_붙여_정수_매개변수를_여러_번_입력받는다(int value) {
assertTrue(value > 0 && value < 10);
}
@ParameterizedTest
@ValueSource(strings = {"a", "b", "c"})
@DisplayName("ValueSource 애노테이션을 붙여 문자열 매개변수를 여러 번 입력받는다")
void ValueSource_애노테이션을_붙여_문자열_매개변수를_여러_번_입력받는다(String value) {
assertEquals(value.length(), 1);
}
@ParameterizedTest
@ValueSource(strings = {"1", "2", "3", "4", "5"})
@DisplayName("ValueSource 애노테이션을 활용하여 1부터 5까지의 문자열 값을 Integer로 parseInt하는 로직이 예외를 발생시키지 않는 지 검증한다")
void ValueSource_애노테이션을_활용하여_1부터_5까지의_문자열_값을_Integer로_변경하는_로직이_예외를_발생시키지_않는_지_검증한다(String value) {
assertDoesNotThrow(() -> Integer.parseInt(value));
}
private static Stream<Arguments> methodSourceTestArguments() {
return Stream.of(Arguments.arguments(new Object()));
}
@ParameterizedTest
@MethodSource("methodSourcesTestArguments")
@DisplayName("MethodSource 애노테이션을 붙여 Object 매개변수를 여러 번 입력받는다")
void MethodSource_애노테이션을_붙여_Object_매개변수를_여러_번_입력받는다(Object object) {
assertInstanceOf(Object.class, object);
}
private static Stream<Arguments> methodSourcesTestArguments() {
return Stream.of(Arguments.arguments());
}
@ParameterizedTest
@MethodSource("methodSourcesStringAndIntegerTestArguments")
@DisplayName("MethodSource 애노테이션을 붙여 정수와 문자열 매개변수를 입력받는다")
void MethodSource_애노테이션을_붙여_정수와_문자열_매개변수를_입력받는다(String v1, int v2) {
// TODO: `MethodSource`를 사용하지 않고 문자열과 정수 변수들을 직접 선언하여 테스트하는 방식과, `MethodSource`를 통해 입력받아 테스트하는 방식의 차이를 비교해보세요.
assertEquals(Integer.parseInt(v1), v2);
}
'멋쟁이사자처럼 동아리 > Java' 카테고리의 다른 글
멋쟁이사자처럼 JAVA - AssertThat (0) | 2024.05.06 |
---|