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

작성자 없음

작성자 정보가 삭제된 글입니다.

Practical Testing: 실용적인 테스트 가이드

Spring REST Docs

섹션8 - Spring REST Docs

작성

·

1.1K

·

수정됨

2

  • 학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!

  • 먼저 유사한 질문이 있었는지 검색해 보세요.

  • 서로 예의를 지키며 존중하는 문화를 만들어가요.

안녕하세요. 강의를 100% 다 소화하지는 못했지만 일단 거진 한바퀴는 돌리면서 마지막에 문제가 생겨 질문 드립니다.

plugins {
   id 'java'
   id 'org.springframework.boot' version '2.7.7'
   id 'io.spring.dependency-management' version '1.0.15.RELEASE'
   id "org.asciidoctor.jvm.convert" version "3.3.2"
}

group = 'sample'
version = '0.0.1-SNAPSHOT'

java {
   sourceCompatibility = '11'
}

configurations {
   compileOnly {
      extendsFrom annotationProcessor
   }
   asciidoctorExt
}

repositories {
   mavenCentral()
}

dependencies {
   // Spring boot
   implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
   implementation 'org.springframework.boot:spring-boot-starter-web'
   implementation 'org.springframework.boot:spring-boot-starter-validation'

   // test
   testImplementation 'org.springframework.boot:spring-boot-starter-test'

   // lombok
   compileOnly 'org.projectlombok:lombok'
   annotationProcessor 'org.projectlombok:lombok'

   //테스트에서 lombok 사용
   testCompileOnly 'org.projectlombok:lombok'
   testAnnotationProcessor 'org.projectlombok:lombok'

   // h2
   runtimeOnly 'com.h2database:h2'

   // Guava
   implementation("com.google.guava:guava:32.1.1-jre")

   // RestDocs
   asciidoctorExt 'org.springframework.restdocs:spring-restdocs-asciidoctor'
   testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'
}

tasks.named('test') {
   useJUnitPlatform()
}

ext { // 전역 변수
   snippetsDir = file('build/generated-snippets')
}

test {
   outputs.dir snippetsDir
}

asciidoctor {
   inputs.dir snippetsDir
   configurations 'asciidoctorExt'

   sources {
      include("**/index.adoc")
   }
   baseDirFollowsSourceDir()
   dependsOn test
}

bootJar {
   dependsOn asciidoctor
   from ("${asciidoctor.outputDir}") {
      into 'static/docs'
   }
}

 

일단 build.gradle 내용이구요. 운영체제는 윈도우 입니다.

마지막에 build 후 jar파일을 실행하여 localhost:8080/docs/index.html 을 확인해보려고 하니 접속이 되지 않아 확인해보니 resources - static 디렉토리에 index.html이 생성되지 않았음을 확인하였습니다. build 디렉토리에는 생성되어 있었구요.

몇번이나 clean 후 build를 통해 build쪽에는 index.html이 생성 되는 것을 확인 하였으나, static 패키지 하위에 docs 패키지 조차 생성되지 않아 제가 뭔가 오타를 낸건지 운영체제 문제인지 질문 드리고자 합니다.

 

감사합니다.

답변 3

1

박우빈님의 프로필 이미지
박우빈
지식공유자

안녕하세요, ktony님! :)

제가 소스를 받아서 한번 확인해봤는데, 저는 일단 jar 실행 시 문서가 잘 나오는 것을 확인했어요.
/static/docs 하위에 index.html도 잘 들어가 있고요.

정확한 문제 원인은 당장 알기 어렵지만, 말씀하신 내용으로 볼 때 문서 파일은 잘 만들어졌으나 파일을 이동하는 부분에서 운영체제의 차이로 인해 경로가 다르게 잡혔을 수도 있겠다는 생각이 들어요.

제가 윈도우 pc가 없어 직접적인 확인은 조금 어려운 상황이라, 다음과 같이 현재 설정하고 있는 경로가 올바른지 (절대 경로 확인) 체크해보면서 디버깅 해보셔야 할 것 같습니다.

bootJar {
   dependsOn asciidoctor
   from ("${asciidoctor.outputDir}") {
      println(file("${asciidoctor.outputDir}")) // 경로 확인
      println(file('static/docs')) // 경로 확인
      into 'static/docs'
   }
}

명확하게 도움을 드리지 못해 죄송하네요 ㅠㅠ
한번 위와 같은 방향으로 여러가지 시도해 보시고 말씀 부탁드려요.

감사합니다! :)

답변 감사합니다!

task copyDocument(type: Copy) {
   dependsOn asciidoctor
   // 소스 코드에 html파일을 복사
   from file("${asciidoctor.outputDir}")
   into file("src/main/resources/static/docs")
}

build {
   dependsOn copyDocument
}

오늘 답변주신 내용 토대로 조금 더 검색해서 본 결과

몇몇 예시 코드들에서 공통적으로 발견된 위의 소스를 추가하여 build - clean & build 한 결과 하위 경로로 index.html이 생성되고 실행시 원하는 모양으로 나오는걸 확인 하였습니다.
왜 저는 위 코드를 추가하지 않으면 안되는지 까지는 아직 잘 모르겠네요..

답변 감사합니다.

다시한번 좋은 강의 너무나도 감사 드립니다!

 

0

저도 위와 같은 문제를 겪었습니다.

박우빈 강사님께서 소개해주신 방법으로 하니까 경로가 `/Users/wyu/dev/time-slot/timeslot/static/docs` 다른 곳으로 잡혀있네요.

bootJar {
    dependsOn asciidoctor
    from ("${asciidoctor.outputDir}") {
        into '/static/docs' // static 앞에 /를 추가
    }
}

위와 같이 수정하였더니 잘 돌아갔습니다.

0

안녕하세요, 인프런 AI 인턴이에요. Spring REST Docs에 관한 질문이시군요.

해당 코드는 build.gradle 파일의 내용인 것 같은데요, 제가 도움을 드릴 수 있는 부분이 있을까요? 혹은 어떤 문제가 있는지 더 자세히 설명해주시면 도움을 드릴 수 있을 것 같아요.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기