April 13, 2023
TDD를 사용하면서 여러 기본 활용법들을 기록한다.(너무 기본적인 것들은 제외)
@BeforeEach
void setUp() {
numbers = new HashSet<>();
numbers.add(1);
numbers.add(1);
numbers.add(2);
numbers.add(3);
}
@Test
@DisplayName("String을 split 했을시 배열 검증")
void split() {
String[] result = "1,2".split(",");
assertThat(result).containsExactly("1", "2");
}
argument source 들의 종류
@ParameterizedTest
@DisplayName("Set 안에 포함된 요소들 확인하기 : @ViewSource ")
@ValueSource(ints = {1, 2, 3})
void contains(int input) {
assertThat(numbers.contains(input)).isTrue();
}
@ParameterizedTest
@DisplayName("Set 안에 포함된 요소들 확인하기 : @CsvSource ")
@CsvSource(value = {"1:true", "2:true", "3:true"}, delimiter = ':')
void contains(int input, boolean expected) {
assertThat(numbers.contains(input)).isEqualTo(expected);
}
@ParameterizedTest
@DisplayName("Set 안에 포함된 요소들 확인하기(예제) : @CsvSource(true, false 둘 다 사용해보기)")
@CsvSource(value = {"test:test", "tEst:test", "Java:java"}, delimiter = ':')
void contains(String input, String expected) {
String actual = input.toLowerCase();
assertThat(actual).isEqualTo(expected);
}
@Test
@DisplayName("유효하지 않은 위치의 스트링 값을 가져올 때 에러가 발생할 것이다.")
void stringCharAt() {
String problem = "abc";
// #1
assertThatThrownBy(() -> problem.charAt(problem.length()))
.isInstanceOf(StringIndexOutOfBoundsException.class)
.hasMessageContaining("String index out of range: 3");
// #2
assertThatExceptionOfType(StringIndexOutOfBoundsException.class)
.isThrownBy(() -> problem.charAt(problem.length()))
.withMessageMatching("String index out of range: \\d");
}