작성
·
224
0
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.17'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
id "org.asciidoctor.jvm.convert" version "3.3.2"
}
group = 'com.blog'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '11'
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
asciidoctorExt
}
repositories {
mavenCentral()
}
ext {
asciidocVersion = "2.0.6.RELEASE"
snippetsDir = file('build/generated-snippets')
}
dependencies {
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'
implementation 'com.querydsl:querydsl-core'
implementation 'com.querydsl:querydsl-jpa'
asciidoctorExt "org.springframework.restdocs:spring-restdocs-asciidoctor:${asciidocVersion}"
testImplementation "org.springframework.restdocs:spring-restdocs-mockmvc:${asciidocVersion}"
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa"
annotationProcessor 'jakarta.persistence:jakarta.persistence-api'
annotationProcessor 'jakarta.annotation:jakarta.annotation-api'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
test {
outputs.dir snippetsDir
}
asciidoctor {
inputs.dir snippetsDir
configurations 'asciidoctorExt'
dependsOn test
}
bootJar {
dependsOn asciidoctor
from ("${asciidoctor.outputDir}/html5") {
into 'static/docs'
}
}
package com.blog.api.controller;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.restdocs.RestDocumentationContextProvider;
import org.springframework.restdocs.RestDocumentationExtension;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
import static com.querydsl.core.alias.MethodType.get;
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document;
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@SpringBootTest
@ExtendWith(RestDocumentationExtension.class)
public class PostControllerDocTest {
private MockMvc mockMvc;
@BeforeEach
void setUp(WebApplicationContext webApplicationContext, RestDocumentationContextProvider restDocumentation) {
this.mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext)
.apply(documentationConfiguration(restDocumentation))
.build();
}
@Test
@DisplayName("아무개")
void Test1() throws Exception {
this.mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andDo(document("index"));
}
}
위와 같이 Test1 에서 get("/") 부분에서 url 타입이 계속 안맞다고 하는데요
강의와 똑같이 했는데 뭐가 문제인지 잘 모르겠습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
장달콤님의 코드에서 get("/")
부분의 문제로 보이는데요, get("/")
는 MockMvcRequestBuilders.get("/")
을 사용해야 합니다. 현재 잘못된 get
메소드를 사용하고 있기 때문에 발생하는 문제 같습니다.
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
이 위의 코드를 추가하여 올바른 get
메소드를 가져오는 것을 확인해야 합니다. 지금은 QueryDSL의 get
메소드를 잘못 가져오고 있기 때문에 다음과 같이 import 구문을 수정하시면 됩니다.
현재 있는 잘못된 import 구문:
import static com.querydsl.core.alias.MethodType.get;
수정해야 하는 올바른 import 구문:
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
위와 같이 수정하신 후에 테스트를 다시 실행해보시길 바랍니다.
해결되었습니다 감사합니다.