From 497a7da15dba3b02c424fd2f2396a3485201b37b Mon Sep 17 00:00:00 2001 From: Heesoo Date: Tue, 24 Sep 2024 22:32:43 +0900 Subject: [PATCH 1/5] =?UTF-8?q?[test]=20git=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/study/{ => mission0}/StringTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/test/java/study/{ => mission0}/StringTest.java (91%) diff --git a/src/test/java/study/StringTest.java b/src/test/java/study/mission0/StringTest.java similarity index 91% rename from src/test/java/study/StringTest.java rename to src/test/java/study/mission0/StringTest.java index 43e47d9..d66c62e 100644 --- a/src/test/java/study/StringTest.java +++ b/src/test/java/study/mission0/StringTest.java @@ -1,4 +1,4 @@ -package study; +package study.mission0; import org.junit.jupiter.api.Test; From c5dcaff522b84f10b3fa1599524110eccdbda267 Mon Sep 17 00:00:00 2001 From: Heesoo Date: Tue, 24 Sep 2024 22:38:55 +0900 Subject: [PATCH 2/5] =?UTF-8?q?[test]=20=ED=95=99=EC=8A=B5=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=A4=91=20StringTest=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/study/mission0/StringTest.java | 42 +++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/src/test/java/study/mission0/StringTest.java b/src/test/java/study/mission0/StringTest.java index d66c62e..c0aa767 100644 --- a/src/test/java/study/mission0/StringTest.java +++ b/src/test/java/study/mission0/StringTest.java @@ -1,13 +1,53 @@ package study.mission0; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; public class StringTest { @Test - void replace() { + void replace_success() { String actual = "abc".replace("b", "d"); assertThat(actual).isEqualTo("adc"); } + + /** + * 요구사항 1 + * "1,2"을 ,로 split 했을 때 1과 2로 잘 분리되는지 확인하는 학습 테스트를 구현한다. + * "1"을 ,로 split 했을 때 1만을 포함하는 배열이 반환되는지에 대한 학습 테스트를 구현한다. + */ + @Test + @DisplayName("요구사항 1 : split() 함수를 이용해 문자열을 분리시킨다.") + void split_success(){ + String[] splitValues = "1,2".split(","); + assertThat(splitValues).contains("1"); + assertThat(splitValues).containsExactly("1", "2"); // 원소가 정확히 일치하는지 확인 + } + + /** + * 요구사항 2 + * "(1,2)" 값이 주어졌을 때 String 의 substring() 메소드를 활용해 ()을 제거하고 "1,2"를 반환하도록 구현한다. + */ + @Test + @DisplayName("요구사항 2 : substring() 함수를 이용해 특정 문자열을 제거 시킨다.") + void substring_success(){ + String value = "(1,2)"; + String subValues = value.substring(1, value.length()-1); + assertThat(subValues).isEqualTo("1,2"); + } + + /** + * 요구사항 3 + * "abc" 값이 주어졌을 때 String의 charAt() 메소드를 활용해 특정 위치의 문자를 가져오는 학습 테스트를 구현한다. + * String의 charAt() 메소드를 활용해 특정 위치의 문자를 가져올 때 위치 값을 벗어나면 StringIndexOutOfBoundsException이 발생하는 부분에 대한 학습 테스트를 구현한다. + * JUnit의 @DisplayName을 활용해 테스트 메소드의 의도를 드러낸다. + */ + @Test + @DisplayName("요구사항 3 : chatAt() 메소드를 이용해 StringIndexOutOfBoundsException 을 발생시킨다.") + void chatAt_StringIndexOutOfBoundsException_fail(){ + String value = "abc"; + assertThrows(StringIndexOutOfBoundsException.class, () -> value.charAt(value.length()+1)); + } } From f9d131ebde06bb0d48e2abc826e9d84d59de81a2 Mon Sep 17 00:00:00 2001 From: Heesoo Date: Tue, 24 Sep 2024 22:40:06 +0900 Subject: [PATCH 3/5] =?UTF-8?q?[test]=20=ED=95=99=EC=8A=B5=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=A4=91=20SetTest=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/study/mission0/SetTest.java | 64 +++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/test/java/study/mission0/SetTest.java diff --git a/src/test/java/study/mission0/SetTest.java b/src/test/java/study/mission0/SetTest.java new file mode 100644 index 0000000..b8ec910 --- /dev/null +++ b/src/test/java/study/mission0/SetTest.java @@ -0,0 +1,64 @@ +package study.mission0; + + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; +import org.junit.jupiter.params.provider.ValueSource; + +import java.util.HashSet; +import java.util.Set; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +public class SetTest { + private Set numbers; + + @BeforeEach + void setUp(){ + numbers = new HashSet<>(); + + numbers.add(1); + numbers.add(2); + numbers.add(3); + } + + /** + * [요구사항 1] + * Set의 size() 메소드를 활용해 Set의 크기를 확인하는 학습테스트를 구현한다. + */ + @Test + @DisplayName("요구사항 1: Set 의 크기를 확인한다.") + void checkSize_success(){ + assertThat(numbers.size()).isEqualTo(4); + } + + /** + * [요구사항 2] + * Set의 contains() 메소드를 활용해 1, 2, 3의 값이 존재하는지를 확인하는 학습테스트를 구현하려한다. + * 구현하고 보니 다음과 같이 중복 코드가 계속해서 발생한다. + * JUnit의 ParameterizedTest를 활용해 중복 코드를 제거해 본다. + */ + @ParameterizedTest + @ValueSource(ints = {1, 2, 3}) + @DisplayName("요구사항 2: contains() 메소드를 활용해 값 존재하는지 확인하며 ParameterizedTest 를 이용해 중복코드를 제거한다.") + void isContains_success(int number){ + assertThat(numbers.contains(number)).isTrue(); + } + + + /** + * [요구사항 3] + * 요구사항 2는 contains 메소드 결과 값이 true인 경우만 테스트 가능하다. 입력 값에 따라 결과 값이 다른 경우에 대한 테스트도 가능하도록 구현한다. + * 예를 들어 1, 2, 3 값은 contains 메소드 실행결과 true, 4, 5 값을 넣으면 false 가 반환되는 테스트를 하나의 Test Case로 구현한다. + */ + @ParameterizedTest + @CsvSource(value = {"1,true", "2,true", "3,true", "4,false", "5,false"}) + @DisplayName("요구사항 3: contains() 메소드를 활용해 값 존재하는지 확인하며 입력값에 따라 true, false 를 반환한다.") + void containsTest_expectedTrueOrFalse_success(int input, boolean expected){ + assertThat(numbers.contains(input)).isEqualTo(expected); + } + +} From 755ecc032e1048a562bf36641b08c27e872b4b71 Mon Sep 17 00:00:00 2001 From: Heesoo Date: Tue, 24 Sep 2024 23:19:29 +0900 Subject: [PATCH 4/5] =?UTF-8?q?[docs]=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EC=A3=BC=EC=84=9D=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/study/mission0/SetTest.java | 19 +++---------------- src/test/java/study/mission0/StringTest.java | 20 ++++---------------- 2 files changed, 7 insertions(+), 32 deletions(-) diff --git a/src/test/java/study/mission0/SetTest.java b/src/test/java/study/mission0/SetTest.java index b8ec910..11e2dfe 100644 --- a/src/test/java/study/mission0/SetTest.java +++ b/src/test/java/study/mission0/SetTest.java @@ -25,22 +25,14 @@ void setUp(){ numbers.add(3); } - /** - * [요구사항 1] - * Set의 size() 메소드를 활용해 Set의 크기를 확인하는 학습테스트를 구현한다. - */ + @Test @DisplayName("요구사항 1: Set 의 크기를 확인한다.") void checkSize_success(){ assertThat(numbers.size()).isEqualTo(4); } - /** - * [요구사항 2] - * Set의 contains() 메소드를 활용해 1, 2, 3의 값이 존재하는지를 확인하는 학습테스트를 구현하려한다. - * 구현하고 보니 다음과 같이 중복 코드가 계속해서 발생한다. - * JUnit의 ParameterizedTest를 활용해 중복 코드를 제거해 본다. - */ + @ParameterizedTest @ValueSource(ints = {1, 2, 3}) @DisplayName("요구사항 2: contains() 메소드를 활용해 값 존재하는지 확인하며 ParameterizedTest 를 이용해 중복코드를 제거한다.") @@ -49,15 +41,10 @@ void isContains_success(int number){ } - /** - * [요구사항 3] - * 요구사항 2는 contains 메소드 결과 값이 true인 경우만 테스트 가능하다. 입력 값에 따라 결과 값이 다른 경우에 대한 테스트도 가능하도록 구현한다. - * 예를 들어 1, 2, 3 값은 contains 메소드 실행결과 true, 4, 5 값을 넣으면 false 가 반환되는 테스트를 하나의 Test Case로 구현한다. - */ @ParameterizedTest @CsvSource(value = {"1,true", "2,true", "3,true", "4,false", "5,false"}) @DisplayName("요구사항 3: contains() 메소드를 활용해 값 존재하는지 확인하며 입력값에 따라 true, false 를 반환한다.") - void containsTest_expectedTrueOrFalse_success(int input, boolean expected){ + void isContains_returnTrueOrFalse_success(int input, boolean expected){ assertThat(numbers.contains(input)).isEqualTo(expected); } diff --git a/src/test/java/study/mission0/StringTest.java b/src/test/java/study/mission0/StringTest.java index c0aa767..aee29a9 100644 --- a/src/test/java/study/mission0/StringTest.java +++ b/src/test/java/study/mission0/StringTest.java @@ -13,11 +13,7 @@ void replace_success() { assertThat(actual).isEqualTo("adc"); } - /** - * 요구사항 1 - * "1,2"을 ,로 split 했을 때 1과 2로 잘 분리되는지 확인하는 학습 테스트를 구현한다. - * "1"을 ,로 split 했을 때 1만을 포함하는 배열이 반환되는지에 대한 학습 테스트를 구현한다. - */ + @Test @DisplayName("요구사항 1 : split() 함수를 이용해 문자열을 분리시킨다.") void split_success(){ @@ -26,10 +22,7 @@ void split_success(){ assertThat(splitValues).containsExactly("1", "2"); // 원소가 정확히 일치하는지 확인 } - /** - * 요구사항 2 - * "(1,2)" 값이 주어졌을 때 String 의 substring() 메소드를 활용해 ()을 제거하고 "1,2"를 반환하도록 구현한다. - */ + @Test @DisplayName("요구사항 2 : substring() 함수를 이용해 특정 문자열을 제거 시킨다.") void substring_success(){ @@ -38,15 +31,10 @@ void substring_success(){ assertThat(subValues).isEqualTo("1,2"); } - /** - * 요구사항 3 - * "abc" 값이 주어졌을 때 String의 charAt() 메소드를 활용해 특정 위치의 문자를 가져오는 학습 테스트를 구현한다. - * String의 charAt() 메소드를 활용해 특정 위치의 문자를 가져올 때 위치 값을 벗어나면 StringIndexOutOfBoundsException이 발생하는 부분에 대한 학습 테스트를 구현한다. - * JUnit의 @DisplayName을 활용해 테스트 메소드의 의도를 드러낸다. - */ + @Test @DisplayName("요구사항 3 : chatAt() 메소드를 이용해 StringIndexOutOfBoundsException 을 발생시킨다.") - void chatAt_StringIndexOutOfBoundsException_fail(){ + void chatAt_StringIndexOutOfBoundsException(){ String value = "abc"; assertThrows(StringIndexOutOfBoundsException.class, () -> value.charAt(value.length()+1)); } From f21c354b5d61a0762f586dffc967a302eb0860ae Mon Sep 17 00:00:00 2001 From: Heesoo Date: Wed, 25 Sep 2024 00:04:13 +0900 Subject: [PATCH 5/5] =?UTF-8?q?[style]=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=ED=95=A8=EC=88=98=EB=AA=85=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/study/mission0/SetTest.java | 6 +++--- src/test/java/study/mission0/StringTest.java | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/test/java/study/mission0/SetTest.java b/src/test/java/study/mission0/SetTest.java index 11e2dfe..263de9d 100644 --- a/src/test/java/study/mission0/SetTest.java +++ b/src/test/java/study/mission0/SetTest.java @@ -28,7 +28,7 @@ void setUp(){ @Test @DisplayName("요구사항 1: Set 의 크기를 확인한다.") - void checkSize_success(){ + void checkSize(){ assertThat(numbers.size()).isEqualTo(4); } @@ -36,7 +36,7 @@ void checkSize_success(){ @ParameterizedTest @ValueSource(ints = {1, 2, 3}) @DisplayName("요구사항 2: contains() 메소드를 활용해 값 존재하는지 확인하며 ParameterizedTest 를 이용해 중복코드를 제거한다.") - void isContains_success(int number){ + void isContainsNumber(int number){ assertThat(numbers.contains(number)).isTrue(); } @@ -44,7 +44,7 @@ void isContains_success(int number){ @ParameterizedTest @CsvSource(value = {"1,true", "2,true", "3,true", "4,false", "5,false"}) @DisplayName("요구사항 3: contains() 메소드를 활용해 값 존재하는지 확인하며 입력값에 따라 true, false 를 반환한다.") - void isContains_returnTrueOrFalse_success(int input, boolean expected){ + void isContains_expectedTrueOrFalse(int input, boolean expected){ assertThat(numbers.contains(input)).isEqualTo(expected); } diff --git a/src/test/java/study/mission0/StringTest.java b/src/test/java/study/mission0/StringTest.java index aee29a9..cf9316b 100644 --- a/src/test/java/study/mission0/StringTest.java +++ b/src/test/java/study/mission0/StringTest.java @@ -8,7 +8,7 @@ public class StringTest { @Test - void replace_success() { + void replace() { String actual = "abc".replace("b", "d"); assertThat(actual).isEqualTo("adc"); } @@ -16,7 +16,7 @@ void replace_success() { @Test @DisplayName("요구사항 1 : split() 함수를 이용해 문자열을 분리시킨다.") - void split_success(){ + void split(){ String[] splitValues = "1,2".split(","); assertThat(splitValues).contains("1"); assertThat(splitValues).containsExactly("1", "2"); // 원소가 정확히 일치하는지 확인 @@ -24,8 +24,8 @@ void split_success(){ @Test - @DisplayName("요구사항 2 : substring() 함수를 이용해 특정 문자열을 제거 시킨다.") - void substring_success(){ + @DisplayName("요구사항 2 : substring() 함수를 이용해 괄호를 제거 시킨다.") + void substringParentheses(){ String value = "(1,2)"; String subValues = value.substring(1, value.length()-1); assertThat(subValues).isEqualTo("1,2"); @@ -33,7 +33,7 @@ void substring_success(){ @Test - @DisplayName("요구사항 3 : chatAt() 메소드를 이용해 StringIndexOutOfBoundsException 을 발생시킨다.") + @DisplayName("요구사항 3 : chatAt() 메소드를 사용해 StringIndexOutOfBoundsException 을 발생시킨다.") void chatAt_StringIndexOutOfBoundsException(){ String value = "abc"; assertThrows(StringIndexOutOfBoundsException.class, () -> value.charAt(value.length()+1));