inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

게시글 CRUD API 구현

CRUD test시, localhost:9000 에러가 뜹니다

해결된 질문

159

learningkimkim

작성한 질문수 1

1

package kdy.board.article.api;

import MSA.board.article.service.response.ArticleResponse;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.junit.jupiter.api.Test;
import org.springframework.web.client.RestClient;

public class ArticleApiTest {
    RestClient restClient = RestClient.create("http://localhost:9000");

    @Test
    void createTest() {
        ArticleResponse response = create(new ArticleCreateRequest(
                "hi", "my content", 1L, 1L
        ));
        System.out.println("response = " + response);
    }

    ArticleResponse create(ArticleCreateRequest request) {
        return restClient.post()
                .uri("/v1/articles")
                .body(request)
                .retrieve()
                .body(ArticleResponse.class);
    }

    @Getter
    @AllArgsConstructor
    static class ArticleCreateRequest {
        private String title;
        private String content;
        private Long writerId;
        private Long boardId;
    }

    @Getter
    @AllArgsConstructor
    static class ArticleUpdateRequest {
        private String title;
        private String content;
    }
}

위와 같이 코드 쓰고 Test를 진행하면 아래와 같은 에러가 뜹니다.

cmd창에서 검색해봐도 현재 9000을 쓰고 있는 서버는 없다고 뜨는데 어느 부분이 문제인 건가요?

> Task :common:snowflake:compileJava UP-TO-DATE

> Task :common:snowflake:processResources NO-SOURCE

> Task :common:snowflake:classes UP-TO-DATE

> Task :common:snowflake:jar UP-TO-DATE

> Task :service:article:compileJava UP-TO-DATE

> Task :service:article:processResources UP-TO-DATE

> Task :service:article:classes UP-TO-DATE

> Task :service:article:compileTestJava

> Task :service:article:processTestResources NO-SOURCE

> Task :service:article:testClasses

org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://localhost:9000/v1/articles": null

	at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.createResourceAccessException(DefaultRestClient.java:575)

	at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.exchangeInternal(DefaultRestClient.java:498)

	at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.retrieve(DefaultRestClient.java:460)

	at kdy.board.article.api.ArticleApiTest.create(ArticleApiTest.java:24)

	at kdy.board.article.api.ArticleApiTest.createTest(ArticleApiTest.java:14)

	at java.base/java.lang.reflect.Method.invoke(Method.java:580)

	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)

	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)

Caused by: java.net.ConnectException

	at java.net.http/jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:951)

	at java.net.http/jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:133)

	at org.springframework.http.client.JdkClientHttpRequest.executeInternal(JdkClientHttpRequest.java:102)

	at org.springframework.http.client.AbstractStreamingClientHttpRequest.executeInternal(AbstractStreamingClientHttpRequest.java:70)

	at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:66)

	at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.exchangeInternal(DefaultRestClient.java:492)

	... 6 more

Caused by: java.net.ConnectException

	at java.net.http/jdk.internal.net.http.common.Utils.toConnectException(Utils.java:1041)

	at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:227)

	at java.net.http/jdk.internal.net.http.PlainHttpConnection.checkRetryConnect(PlainHttpConnection.java:280)

	at java.net.http/jdk.internal.net.http.PlainHttpConnection.lambda$connectAsync$2(PlainHttpConnection.java:238)

	at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934)

	at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:911)

	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)

	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773)

	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)

	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)

	at java.base/java.lang.Thread.run(Thread.java:1583)

Caused by: java.nio.channels.ClosedChannelException

	at java.base/sun.nio.ch.SocketChannelImpl.ensureOpen(SocketChannelImpl.java:202)

	at java.base/sun.nio.ch.SocketChannelImpl.beginConnect(SocketChannelImpl.java:786)

	at java.base/sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:874)

	at java.net.http/jdk.internal.net.http.PlainHttpConnection.lambda$connectAsync$1(PlainHttpConnection.java:210)

	at java.base/java.security.AccessController.doPrivileged(AccessController.java:571)

	at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:212)

	... 9 more

java.net.ConnectException

	at java.net.http/jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:951)

	at java.net.http/jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:133)

	at org.springframework.http.client.JdkClientHttpRequest.executeInternal(JdkClientHttpRequest.java:102)

	at org.springframework.http.client.AbstractStreamingClientHttpRequest.executeInternal(AbstractStreamingClientHttpRequest.java:70)

	at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:66)

	at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.exchangeInternal(DefaultRestClient.java:492)

	at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.retrieve(DefaultRestClient.java:460)

	at kdy.board.article.api.ArticleApiTest.create(ArticleApiTest.java:24)

	at kdy.board.article.api.ArticleApiTest.createTest(ArticleApiTest.java:14)

	at java.base/java.lang.reflect.Method.invoke(Method.java:580)

	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)

	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)

Caused by: java.net.ConnectException

	at java.net.http/jdk.internal.net.http.common.Utils.toConnectException(Utils.java:1041)

	at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:227)

	at java.net.http/jdk.internal.net.http.PlainHttpConnection.checkRetryConnect(PlainHttpConnection.java:280)

	at java.net.http/jdk.internal.net.http.PlainHttpConnection.lambda$connectAsync$2(PlainHttpConnection.java:238)

	at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934)

	at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:911)

	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)

	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773)

	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)

	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)

	at java.base/java.lang.Thread.run(Thread.java:1583)

Caused by: java.nio.channels.ClosedChannelException

	at java.base/sun.nio.ch.SocketChannelImpl.ensureOpen(SocketChannelImpl.java:202)

	at java.base/sun.nio.ch.SocketChannelImpl.beginConnect(SocketChannelImpl.java:786)

	at java.base/sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:874)

	at java.net.http/jdk.internal.net.http.PlainHttpConnection.lambda$connectAsync$1(PlainHttpConnection.java:210)

	at java.base/java.security.AccessController.doPrivileged(AccessController.java:571)

	at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:212)

	... 9 more

> Task :service:article:test

ArticleApiTest > createTest() FAILED

    org.springframework.web.client.ResourceAccessException at ArticleApiTest.java:24

        Caused by: java.net.ConnectException at ArticleApiTest.java:24

            Caused by: java.net.ConnectException at Utils.java:1041

                Caused by: java.nio.channels.ClosedChannelException at SocketChannelImpl.java:202

1 test completed, 1 failed

> Task :service:article:test FAILED

FAILURE: Build failed with an exception.

* What went wrong:

Execution failed for task ':service:article:test'.

> There were failing tests. See the report at: file:///D:/projects/MSA-board/service/article/build/reports/tests/test/index.html

* Try:

> Run with --scan to get full insights.

BUILD FAILED in 9s

6 actionable tasks: 2 executed, 4 up-to-date

java mysql spring-boot kafka redis

답변 3

1

learningkimkim

앗 9000번 포트 taskkill 하고 다시 실행해보니 해결되었습니다!

1

쿠케

learningkimkim님, 안녕하세요!

스프링부트 서버 애플리케이션이 9000번 포트에서 실행되고 있는게 맞을까요?

애플리케이션이 실행 중인 상태에서 수행해주셔야 합니다!

0

learningkimkim

넵! 지금 ArticleApplication도 돌리고 있고 로그도 아래와 같이 찍혀서 9000번에서 잘 돌아가고 있는 것 같습니다..

Tomcat initialized with port 9000 (http)

그래도 계속 Test 통과를 못 하고 있습니다..

@Version 어노테이션이 붙은 필드는 낙관적 락이든 비관적 락이든 업데이트가 됩니다.

0

31

1

consumer에서 에러가 발생할 경우 데이터 유실 문의

0

48

2

게시글 테스트 데이터 삽입

0

51

2

정렬, 필터, 검색 등의 조건이 붙을 경우 최적화할 수 있는 방법이 무엇이 있을까요?

0

104

2

좋아요 기능 정합성 보장 방법

0

98

2

좋아요 동시성처리 최적의 선택?

1

136

2

프론트엔드 msa 환경 api 주소 통합? 과 서버끼리 통신 방식에대해

0

92

2

안녕하세요 무한스크롤 강의듣다가 질문이 있습니다.

0

59

1

조회수 조회 로직 질문

1

67

2

비로그인 유저도 어뷰징 방지 정책

1

73

2

CommentServiceTest의 테스트 로직 질문

0

54

2

무한 스크롤 방식에서 페이지 번호 방식 쿼리의 문제점 의문

1

74

2

path 쿼리 관련 질문드립니다!

0

60

2

antigravity 에디터를 쓰신다면 종료해주세요

1

123

0

프로젝트 구조

0

88

2

article_like_count api test

0

79

2

이벤트 페이로드 객체의 생성 방식이 팩토리 메서드 패턴이 아닌 빌더 패턴인 이유가 궁금합니다!.

0

104

2

[33. 좋아요 수 구현] 에서 테스트 하는 화면 동시성 문제

0

92

2

findByPath에서 articleId로도 검색을 해야 할 것 같아요.

0

92

3

jpa ddl-auto none을 하는 이유와 join 방법

0

97

2

팩터리 메소드와 response 객체 사용 이유가 궁금합니다!

0

90

2

커서 기반 페이지네이션 과 무한 스크롤링

0

110

2

게시글 생성 로직에서 오류 발생시 redis 게시글 수 되돌리기

0

97

2

멀티 모듈이 아닌 MSA 환경에서 common

0

156

2