import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
public class ExampleTest {
// 문자열을 연결하는 메서드
public String concatenate(String str1, String str2) {
return str1 + str2;
}
// concatenate 메서드를 테스트하는 JUnit 테스트 메서드
@org.junit.Test
public void testConcatenate() {
// Given (주어진 상황)
String str1 = "Hello";
String str2 = "World";
// When (언제)
String result = concatenate(str1, str2);
// Then (그럼에도 불구하고)
// assertThat을 사용하여 결과가 기대한 값인 "HelloWorld"와 일치하는지 확인
assertThat(result, is("HelloWorld"));
}
}
이 코드는 자바에서 JUnit 및 Hamcrest 라이브러리를 사용하여 단위 테스트를 수행하는 예제입니다. 코드의 실행 과정을 간략하게 설명하겠습니다.
테스트 대상 메서드 정의 (concatenate 메서드): ExampleTest 클래스에는 concatenate라는 문자열을 연결하는 메서드가 정의되어 있습니다. 이 메서드는 두 개의 문자열을 인자로 받아서 이어 붙여서 반환합니다.
Copy code
public String concatenate(String str1, String str2) {
return str1 + str2;
}
테스트 케이스 작성 (testConcatenate 메서드): testConcatenate 메서드는 concatenate 메서드를 테스트하는 JUnit 테스트 메서드입니다. 이 메서드는 @org.junit.Test 어노테이션으로 테스트 메서드임을 나타냅니다.
Copy code
@org.junit.Test
public void testConcatenate() {
// Given (주어진 상황)
String str1 = "Hello";
String str2 = "World";
테스트 실행 (When 블록): testConcatenate 메서드의 When 블록에서는 concatenate 메서드를 호출하고 그 결과를 변수 result에 저장합니다.
Copy code
// When (언제)
String result = concatenate(str1, str2);
테스트 결과 검증 (Then 블록): Then 블록에서는 assertThat 메서드를 사용하여 특정 조건을 검증합니다. 여기서는 result가 기대한 값인 "HelloWorld"와 일치하는지를 확인합니다.
Copy code
// Then (그럼에도 불구하고)
// assertThat을 사용하여 결과가 기대한 값인 "HelloWorld"와 일치하는지 확인
assertThat(result, is("HelloWorld"));
테스트 실행 및 결과 판단: 테스트 케이스가 실행되면 concatenate 메서드의 결과와 예상 값이 일치하는지 여부가 판단됩니다. 만약 두 값이 일치하지 않으면 테스트는 실패하게 됩니다. 이러한 결과는 테스트 결과 리포트에 표시되어 개발자에게 애플리케이션의 코드나 로직에 오류가 있는지 여부를 알려줍니다.
이것이 간단한 단위 테스트의 실행 과정입니다. 이러한 단위 테스트를 통해 코드의 일부분이 예상대로 작동하는지 확인하고, 코드 변경 시에 예기치 않은 부작용이 발생하지 않도록 보장할 수 있습니다.
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
public class ArraySumTest {
// 배열의 합을 계산하는 메서드
public int calculateSum(int[] numbers) {
int sum = 0;
for (int number : numbers) {
sum += number;
}
return sum;
}
// calculateSum 메서드를 테스트하는 JUnit 테스트 메서드
@org.junit.Test
public void testCalculateSum() {
// Given (주어진 상황)
int[] numbers = {1, 2, 3, 4, 5};
// When (언제)
int result = calculateSum(numbers);
// Then (그럼에도 불구하고)
// assertThat을 사용하여 결과가 기대한 값인 15와 일치하는지 확인
assertThat(result, is(15));
}
}
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
import java.util.ArrayList;
import java.util.List;
public class FilterListTest {
// 리스트에서 특정 조건을 만족하는 요소를 걸러내는 메서드
// List<String>은 반환 타입을 나타냄
public List<String> filterList(List<String> words, int minLength) {
List<String> filteredList = new ArrayList<>();
for (String word : words) {
if (word.length() >= minLength) {
filteredList.add(word);
}
}
return filteredList;
}
// filterList 메서드를 테스트하는 JUnit 테스트 메서드
@org.junit.Test
public void testFilterList() {
// Given (주어진 상황)
List<String> words = List.of("apple", "banana", "kiwi", "orange");
int minLength = 5;
// When (언제)
List<String> result = filterList(words, minLength);
// Then (그럼에도 불구하고)
// assertThat을 사용하여 결과가 기대한 값인 ["banana", "orange"]와 일치하는지 확인
assertThat(result, contains("banana", "orange"));
}
}