강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

learningkimkim님의 프로필 이미지
learningkimkim

작성한 질문수

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

게시글 CRUD API 구현

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

해결된 질문

작성

·

92

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

답변 3

1

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

0

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

Tomcat initialized with port 9000 (http)

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

0

쿠케님의 프로필 이미지
쿠케
지식공유자

learningkimkim님, 안녕하세요!

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

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

learningkimkim님의 프로필 이미지
learningkimkim

작성한 질문수

질문하기