Set Collection에 대한 학습 테스트
•
다음과 같은 Set 데이터가 주어졌을 때 요구사항을 만족해야 한다.
public class SetTest {
private Set<Integer> numbers;
@BeforeEach
void setUp() {
numbers = new HashSet<>();
numbers.add(1);
numbers.add(1);
numbers.add(2);
numbers.add(3);
}
// Test Case 구현
}
Java
복사
요구사항 1
•
Set의 size() 메소드를 활용해 Set의 크기를 확인하는 학습테스트를 구현한다.
요구사항 2
•
Set의 contains() 메소드를 활용해 1, 2, 3의 값이 존재하는지를 확인하는 학습테스트를 구현하려한다.
•
구현하고 보니 다음과 같이 중복 코드가 계속해서 발생한다.
•
JUnit의 ParameterizedTest를 활용해 중복 코드를 제거해 본다.
@Test
void contains() {
assertThat(numbers.contains(1)).isTrue();
assertThat(numbers.contains(2)).isTrue();
assertThat(numbers.contains(3)).isTrue();
}
Java
복사
코드 구성
작성코드
피드백
1) 다양한 API 를 활용
assertThat(size).isEqualTo(3);
Java
복사
•
다음과 같이 변경
assertThat(numbers).hasSize(3);
Java
복사
2) Boolean 타입을 직접 전달 받을 수 있다.
@DisplayName("부분적으로 값이 다른 것도 체크")
@ParameterizedTest
@CsvSource(value = {"1:true", "2:true", "3:true", "4:false","5:false" }, delimiter = ':')
public void searchPartialValue(String input, String expected) throws Exception {
Java
복사
•
다음과 같이 변경
public void searchPartialValue(String input, String expected) throws Exception {
public void searchPartialValue(String input, boolean expected) throws Exception {
Java
복사
후기
오늘은 간단하게, 테스트를 어떻게 진행하는지와 깃을 어떻게 사용하는지에 대해 간단한 설명을 들었다. TDD 함수를 위와 같은 형태로 조금씩 사용해 보았는데, 다양한 함수를 사용하지 않아서 그런지 아직은 어색한 부분이 있었다. 이를 인지하면서, 사용하지 않았던 부분도 계속해서 노력하여 사용해 보려고 한다. 저극적으로 습관이 되도록 사용해보자!
깃허브 링크
출처