From 70b1f9d8faee7ee46f8aea113b61b8a0a7cb3a34 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Sun, 29 Jun 2025 22:55:26 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20DynamicFixture=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 --- .../PostLikeCountConcurrencyTest.java | 44 +++++-------------- .../solidconnection/e2e/DynamicFixture.java | 18 -------- 2 files changed, 11 insertions(+), 51 deletions(-) delete mode 100644 src/test/java/com/example/solidconnection/e2e/DynamicFixture.java diff --git a/src/test/java/com/example/solidconnection/concurrency/PostLikeCountConcurrencyTest.java b/src/test/java/com/example/solidconnection/concurrency/PostLikeCountConcurrencyTest.java index 472cb3aca..7c2e61bb0 100644 --- a/src/test/java/com/example/solidconnection/concurrency/PostLikeCountConcurrencyTest.java +++ b/src/test/java/com/example/solidconnection/concurrency/PostLikeCountConcurrencyTest.java @@ -1,27 +1,25 @@ package com.example.solidconnection.concurrency; import com.example.solidconnection.community.board.domain.Board; -import com.example.solidconnection.community.board.repository.BoardRepository; +import com.example.solidconnection.community.board.fixture.BoardFixture; import com.example.solidconnection.community.post.domain.Post; import com.example.solidconnection.community.post.domain.PostCategory; +import com.example.solidconnection.community.post.fixture.PostFixture; import com.example.solidconnection.community.post.repository.PostRepository; import com.example.solidconnection.community.post.service.PostLikeService; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; -import com.example.solidconnection.siteuser.repository.SiteUserRepository; import com.example.solidconnection.support.TestContainerSpringBootTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; -import static com.example.solidconnection.e2e.DynamicFixture.createSiteUserByEmailAndNickname; import static org.junit.jupiter.api.Assertions.assertEquals; @TestContainerSpringBootTest @@ -35,16 +33,13 @@ class PostLikeCountConcurrencyTest { private PostRepository postRepository; @Autowired - private BoardRepository boardRepository; + private SiteUserFixture siteUserFixture; @Autowired - private SiteUserRepository siteUserRepository; + private BoardFixture boardFixture; @Autowired - private SiteUserFixture siteUserFixture; - - @Value("${view.count.scheduling.delay}") - private int SCHEDULING_DELAY_MS; + private PostFixture postFixture; private int THREAD_NUMS = 1000; private int THREAD_POOL_SIZE = 200; @@ -56,30 +51,15 @@ class PostLikeCountConcurrencyTest { @BeforeEach void setUp() { - board = createBoard(); - boardRepository.save(board); + board = boardFixture.자유게시판(); user = siteUserFixture.사용자(); - post = createPost(board, user); - postRepository.save(post); - } - - private Board createBoard() { - return new Board( - "FREE", "자유게시판"); - } - - private Post createPost(Board board, SiteUser siteUser) { - Post post = new Post( + post = postFixture.게시글( "title", "content", false, - 0L, - 0L, - PostCategory.valueOf("자유") - ); - post.setBoardAndSiteUser(board, siteUser); - - return post; + PostCategory.자유, + board, + user); } @Test @@ -91,9 +71,8 @@ private Post createPost(Board board, SiteUser siteUser) { Long likeCount = postRepository.getById(post.getId()).getLikeCount(); for (int i = 0; i < THREAD_NUMS; i++) { - String email = "email" + i; String nickname = "nickname" + i; - SiteUser tmpSiteUser = siteUserRepository.save(createSiteUserByEmailAndNickname(email, nickname)); + SiteUser tmpSiteUser = siteUserFixture.사용자(i, nickname); executorService.submit(() -> { try { postLikeService.likePost(tmpSiteUser, post.getId()); @@ -103,7 +82,6 @@ private Post createPost(Board board, SiteUser siteUser) { } }); } - doneSignal.await(TIMEOUT_SECONDS, TimeUnit.SECONDS); executorService.shutdown(); boolean terminated = executorService.awaitTermination(TIMEOUT_SECONDS, TimeUnit.SECONDS); diff --git a/src/test/java/com/example/solidconnection/e2e/DynamicFixture.java b/src/test/java/com/example/solidconnection/e2e/DynamicFixture.java deleted file mode 100644 index 5187877d2..000000000 --- a/src/test/java/com/example/solidconnection/e2e/DynamicFixture.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.example.solidconnection.e2e; - -import com.example.solidconnection.siteuser.domain.PreparationStatus; -import com.example.solidconnection.siteuser.domain.Role; -import com.example.solidconnection.siteuser.domain.SiteUser; - -public class DynamicFixture { // todo: test fixture 개선 작업 이후, 이 클래스의 사용이 대체되면 삭제 필요 - - public static SiteUser createSiteUserByEmailAndNickname(String email, String nickname) { - return new SiteUser( - email, - nickname, - "profileImage", - PreparationStatus.CONSIDERING, - Role.MENTEE - ); - } -}