From cd50946e38e89edb1a31f4d9ae7c003e796ee4a8 Mon Sep 17 00:00:00 2001 From: west_east Date: Wed, 25 Jun 2025 14:13:47 +0900 Subject: [PATCH 01/11] =?UTF-8?q?[#4]=20feat:=20=EA=B8=B0=EB=B3=B8=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/run/backend/BackendApplicationTests.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/test/java/run/backend/BackendApplicationTests.java b/src/test/java/run/backend/BackendApplicationTests.java index d9e66dd..669c9a2 100644 --- a/src/test/java/run/backend/BackendApplicationTests.java +++ b/src/test/java/run/backend/BackendApplicationTests.java @@ -6,8 +6,4 @@ @SpringBootTest class BackendApplicationTests { - @Test - void contextLoads() { - } - } From c163e6d8a63df118c339febfc34c43bcd35fd704 Mon Sep 17 00:00:00 2001 From: west_east Date: Wed, 25 Jun 2025 14:14:25 +0900 Subject: [PATCH 02/11] =?UTF-8?q?[#4]=20feat:=20=EB=A1=AC=EB=B3=B5=20?= =?UTF-8?q?=EC=96=B4=EB=85=B8=ED=85=8C=EC=9D=B4=EC=85=98=20=EC=BB=A4?= =?UTF-8?q?=EB=B2=84=EB=A6=AC=EC=A7=80=20=EB=8C=80=EC=83=81=20=EC=A0=9C?= =?UTF-8?q?=EC=99=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lombok.config | 1 + 1 file changed, 1 insertion(+) create mode 100644 lombok.config diff --git a/lombok.config b/lombok.config new file mode 100644 index 0000000..7a21e88 --- /dev/null +++ b/lombok.config @@ -0,0 +1 @@ +lombok.addLombokGeneratedAnnotation = true From 1d0103323b020150954b5d76c6b3fa3ee52ed8a1 Mon Sep 17 00:00:00 2001 From: west_east Date: Wed, 25 Jun 2025 14:15:17 +0900 Subject: [PATCH 03/11] =?UTF-8?q?[#4]=20feat:=20Github=20Actions=20?= =?UTF-8?q?=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/jacoco.yml | 46 ++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 .github/workflows/jacoco.yml diff --git a/.github/workflows/jacoco.yml b/.github/workflows/jacoco.yml new file mode 100644 index 0000000..9fd9bf9 --- /dev/null +++ b/.github/workflows/jacoco.yml @@ -0,0 +1,46 @@ +name: PR Test + +on: + pull_request: + types: [ opened, synchronize, reopened ] + +permissions: write-all + +jobs: + test: + runs-on: ubuntu-22.04 + + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + distribution: 'adopt' + java-version: '17' + + - name: Create and inject jasypt secret into application-secret.properties + run: | + touch ./src/main/resources/application-secret.properties + echo "ENCRYPT_KEY=${{ secrets.ENCRYPT_KEY }}" > ./src/main/resources/application-secret.properties + cat ./src/main/resources/application-secret.properties + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Test with Gradle + run: | + export ENCRYPT_KEY=${{ secrets.ENCRYPT_KEY }} + ./gradlew --info test + + - name: Test Coverage Report + id: jacoco + uses: madrapps/jacoco-report@v1.7.1 + with: + title: Test Coverage Report + paths: ${{ github.workspace }}/build/reports/jacoco/test/jacocoTestReport.xml + token: ${{ secrets.GITHUB_TOKEN }} + min-coverage-overall: 50 + min-coverage-changed-files: 70 From ebdf00ed5ff87d947a0e4515ec7592a083a17615 Mon Sep 17 00:00:00 2001 From: west_east Date: Wed, 25 Jun 2025 14:15:59 +0900 Subject: [PATCH 04/11] =?UTF-8?q?[#4]=20feat:=20jacoco=20=ED=94=8C?= =?UTF-8?q?=EB=9F=AC=EA=B7=B8=EC=9D=B8=20=EC=84=A4=EC=B9=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/build.gradle b/build.gradle index 4c3876a..aa235ab 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,7 @@ plugins { id 'java' id 'org.springframework.boot' version '3.4.5' id 'io.spring.dependency-management' version '1.1.7' + id 'jacoco' } group = 'run' @@ -38,3 +39,28 @@ dependencies { tasks.named('test') { useJUnitPlatform() } + +test { + finalizedBy jacocoTestReport +} + +jacoco { + toolVersion = "0.8.12" +} + +jacocoTestReport { + dependsOn test + reports { + xml.required.set(true) + } + afterEvaluate { + classDirectories.setFrom( + files(classDirectories.files.collect { + fileTree(dir: it, exclude: [ + '**/Q*.class', + '**/run/backend/BackendApplication.class' + ]) + }) + ) + } +} \ No newline at end of file From af069adfbf7042045111d006f7e85e623533e797 Mon Sep 17 00:00:00 2001 From: west_east Date: Wed, 25 Jun 2025 14:16:49 +0900 Subject: [PATCH 05/11] =?UTF-8?q?[#4]=20feat:=20=EA=B8=B0=EB=B3=B8=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/run/backend/BackendApplicationTests.java | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 src/test/java/run/backend/BackendApplicationTests.java diff --git a/src/test/java/run/backend/BackendApplicationTests.java b/src/test/java/run/backend/BackendApplicationTests.java deleted file mode 100644 index 669c9a2..0000000 --- a/src/test/java/run/backend/BackendApplicationTests.java +++ /dev/null @@ -1,9 +0,0 @@ -package run.backend; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class BackendApplicationTests { - -} From 0dcecd8a7189de90a137d8ee20601c8309ca2d5b Mon Sep 17 00:00:00 2001 From: west_east Date: Wed, 25 Jun 2025 14:46:48 +0900 Subject: [PATCH 06/11] =?UTF-8?q?[#4]=20test:=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BB=A4=EB=B2=84=EB=A6=AC=EC=A7=80=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../crew/controller/TestController.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/main/java/run/backend/domain/crew/controller/TestController.java diff --git a/src/main/java/run/backend/domain/crew/controller/TestController.java b/src/main/java/run/backend/domain/crew/controller/TestController.java new file mode 100644 index 0000000..604093b --- /dev/null +++ b/src/main/java/run/backend/domain/crew/controller/TestController.java @@ -0,0 +1,19 @@ +package run.backend.domain.crew.controller; + +import lombok.RequiredArgsConstructor; +import org.hibernate.annotations.Parameter; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/test") +@RequiredArgsConstructor +public class TestController { + + public String testCode(){ + return "test"; + } +} From ea83cf7189b579735394a83bb117837712978ce6 Mon Sep 17 00:00:00 2001 From: west_east Date: Wed, 25 Jun 2025 14:50:53 +0900 Subject: [PATCH 07/11] =?UTF-8?q?[#4]=20test:=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BB=A4=EB=B2=84=EB=A6=AC=EC=A7=80=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../run/backend/domain/crew/controller/TestController.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/run/backend/domain/crew/controller/TestController.java b/src/main/java/run/backend/domain/crew/controller/TestController.java index 604093b..876641a 100644 --- a/src/main/java/run/backend/domain/crew/controller/TestController.java +++ b/src/main/java/run/backend/domain/crew/controller/TestController.java @@ -3,6 +3,7 @@ import lombok.RequiredArgsConstructor; import org.hibernate.annotations.Parameter; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -13,7 +14,9 @@ @RequiredArgsConstructor public class TestController { + @GetMapping("/hello") public String testCode(){ + System.out.println("Hello World!!"); return "test"; } } From 17f5e0dbce957f610dc5a5bab2712b41f956dbb2 Mon Sep 17 00:00:00 2001 From: west_east Date: Wed, 25 Jun 2025 15:04:41 +0900 Subject: [PATCH 08/11] =?UTF-8?q?[#4]=20test:=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BB=A4=EB=B2=84=EB=A6=AC=EC=A7=80=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TestController.java | 17 +++++------ .../domain/test/service/TestService.java | 18 ++++++++++++ .../domain/test/service/TestServiceTest.java | 28 +++++++++++++++++++ 3 files changed, 55 insertions(+), 8 deletions(-) rename src/main/java/run/backend/domain/{crew => test}/controller/TestController.java (54%) create mode 100644 src/main/java/run/backend/domain/test/service/TestService.java create mode 100644 src/test/java/run/backend/domain/test/service/TestServiceTest.java diff --git a/src/main/java/run/backend/domain/crew/controller/TestController.java b/src/main/java/run/backend/domain/test/controller/TestController.java similarity index 54% rename from src/main/java/run/backend/domain/crew/controller/TestController.java rename to src/main/java/run/backend/domain/test/controller/TestController.java index 876641a..c2d2332 100644 --- a/src/main/java/run/backend/domain/crew/controller/TestController.java +++ b/src/main/java/run/backend/domain/test/controller/TestController.java @@ -1,22 +1,23 @@ -package run.backend.domain.crew.controller; +package run.backend.domain.test.controller; import lombok.RequiredArgsConstructor; -import org.hibernate.annotations.Parameter; -import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import run.backend.domain.test.service.TestService; @RestController @RequestMapping("/test") @RequiredArgsConstructor public class TestController { - @GetMapping("/hello") - public String testCode(){ - System.out.println("Hello World!!"); - return "test"; + private final TestService testService; + + @GetMapping("/hello/{number}") + public String testCoverage(@PathVariable int number) { + + + return testService.testCoverage(number); } } diff --git a/src/main/java/run/backend/domain/test/service/TestService.java b/src/main/java/run/backend/domain/test/service/TestService.java new file mode 100644 index 0000000..cce37a3 --- /dev/null +++ b/src/main/java/run/backend/domain/test/service/TestService.java @@ -0,0 +1,18 @@ +package run.backend.domain.test.service; + +import org.springframework.stereotype.Service; + +@Service +public class TestService { + + public String testCoverage(int number) { + if (number == 1) { + System.out.println("first test"); + } else if (number == 2) { + System.out.println("second test"); + } else { + System.out.println("third test"); + } + return "success"; + } +} diff --git a/src/test/java/run/backend/domain/test/service/TestServiceTest.java b/src/test/java/run/backend/domain/test/service/TestServiceTest.java new file mode 100644 index 0000000..79dc99b --- /dev/null +++ b/src/test/java/run/backend/domain/test/service/TestServiceTest.java @@ -0,0 +1,28 @@ +package run.backend.domain.test.service; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +class TestServiceTest { + + private TestService testService; + + @BeforeEach + void setUp() { + testService = new TestService(); + } + + @Test + @DisplayName("number가 1일 때, 첫 번째 분기를 통과하고 'success'를 반환한다") + void testCoverage_whenNumberIs1() { + int number = 1; + + String result = testService.testCoverage(number); + + assertEquals("success", result, "결과 메시지는 'success'여야 합니다."); + } + +} \ No newline at end of file From 8cae8fa2c46c13c292dcdf623cc06cf2a0eed3a2 Mon Sep 17 00:00:00 2001 From: west_east Date: Wed, 25 Jun 2025 15:09:11 +0900 Subject: [PATCH 09/11] =?UTF-8?q?[#4]=20test:=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BB=A4=EB=B2=84=EB=A6=AC=EC=A7=80=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/controller/TestController.java | 23 --------------- .../domain/test/service/TestService.java | 18 ------------ .../domain/test/service/TestServiceTest.java | 28 ------------------- 3 files changed, 69 deletions(-) delete mode 100644 src/main/java/run/backend/domain/test/controller/TestController.java delete mode 100644 src/main/java/run/backend/domain/test/service/TestService.java delete mode 100644 src/test/java/run/backend/domain/test/service/TestServiceTest.java diff --git a/src/main/java/run/backend/domain/test/controller/TestController.java b/src/main/java/run/backend/domain/test/controller/TestController.java deleted file mode 100644 index c2d2332..0000000 --- a/src/main/java/run/backend/domain/test/controller/TestController.java +++ /dev/null @@ -1,23 +0,0 @@ -package run.backend.domain.test.controller; - -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import run.backend.domain.test.service.TestService; - -@RestController -@RequestMapping("/test") -@RequiredArgsConstructor -public class TestController { - - private final TestService testService; - - @GetMapping("/hello/{number}") - public String testCoverage(@PathVariable int number) { - - - return testService.testCoverage(number); - } -} diff --git a/src/main/java/run/backend/domain/test/service/TestService.java b/src/main/java/run/backend/domain/test/service/TestService.java deleted file mode 100644 index cce37a3..0000000 --- a/src/main/java/run/backend/domain/test/service/TestService.java +++ /dev/null @@ -1,18 +0,0 @@ -package run.backend.domain.test.service; - -import org.springframework.stereotype.Service; - -@Service -public class TestService { - - public String testCoverage(int number) { - if (number == 1) { - System.out.println("first test"); - } else if (number == 2) { - System.out.println("second test"); - } else { - System.out.println("third test"); - } - return "success"; - } -} diff --git a/src/test/java/run/backend/domain/test/service/TestServiceTest.java b/src/test/java/run/backend/domain/test/service/TestServiceTest.java deleted file mode 100644 index 79dc99b..0000000 --- a/src/test/java/run/backend/domain/test/service/TestServiceTest.java +++ /dev/null @@ -1,28 +0,0 @@ -package run.backend.domain.test.service; - -import static org.junit.jupiter.api.Assertions.*; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; - -class TestServiceTest { - - private TestService testService; - - @BeforeEach - void setUp() { - testService = new TestService(); - } - - @Test - @DisplayName("number가 1일 때, 첫 번째 분기를 통과하고 'success'를 반환한다") - void testCoverage_whenNumberIs1() { - int number = 1; - - String result = testService.testCoverage(number); - - assertEquals("success", result, "결과 메시지는 'success'여야 합니다."); - } - -} \ No newline at end of file From 7fcae7da62830931b22162261cdcc5cc46d787a2 Mon Sep 17 00:00:00 2001 From: west_east Date: Wed, 25 Jun 2025 16:20:53 +0900 Subject: [PATCH 10/11] =?UTF-8?q?[#4]=20test:=20jacoco.yml=20.env=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=83=9D=EC=84=B1=20=EB=B0=A9=EC=8B=9D?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/jacoco.yml | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/.github/workflows/jacoco.yml b/.github/workflows/jacoco.yml index 9fd9bf9..2a25b3c 100644 --- a/.github/workflows/jacoco.yml +++ b/.github/workflows/jacoco.yml @@ -11,29 +11,26 @@ jobs: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up JDK 17 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: - distribution: 'adopt' + distribution: 'temurin' java-version: '17' - - name: Create and inject jasypt secret into application-secret.properties - run: | - touch ./src/main/resources/application-secret.properties - echo "ENCRYPT_KEY=${{ secrets.ENCRYPT_KEY }}" > ./src/main/resources/application-secret.properties - cat ./src/main/resources/application-secret.properties +# - name: Create .env file for CI environment +# run: | +# touch .env +# echo "POSTGRES_HOST=${{ secrets.DB_HOST }}" >> .env - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Test with Gradle - run: | - export ENCRYPT_KEY=${{ secrets.ENCRYPT_KEY }} - ./gradlew --info test + run: ./gradlew test - name: Test Coverage Report id: jacoco From 0d2bd17a7f297adba7757707441572e08a1907f5 Mon Sep 17 00:00:00 2001 From: west_east Date: Wed, 25 Jun 2025 17:16:02 +0900 Subject: [PATCH 11/11] =?UTF-8?q?[#4]=20test:=20jacoco.yml=20.env=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=83=9D=EC=84=B1=20=EB=B0=A9=EC=8B=9D?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/jacoco.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/jacoco.yml b/.github/workflows/jacoco.yml index 2a25b3c..5776c7b 100644 --- a/.github/workflows/jacoco.yml +++ b/.github/workflows/jacoco.yml @@ -21,10 +21,8 @@ jobs: distribution: 'temurin' java-version: '17' -# - name: Create .env file for CI environment -# run: | -# touch .env -# echo "POSTGRES_HOST=${{ secrets.DB_HOST }}" >> .env + - name: Create .env file for CI environment + run: echo "${{ secrets.ENV_FILE_CONTENT }}" > .env - name: Grant execute permission for gradlew run: chmod +x gradlew