[英]Spring context can not be loaded in Spock test method
您好我有一個 Spring Boot (2.1.6 RELEASE) 應用程序,我正在嘗試向我的應用程序添加一些簡單的集成測試。 首先,我創建了一個基本的 IntegrationTest class,如下所示:
@TypeChecked
@Transactional
@Rollback
@SpringBootTest(classes = AppRunner.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
abstract class IntegrationTest extends Specification {
@Autowired
protected WebApplicationContext webApplicationContext
@Autowired
ObjectMapper objectMapper
MockMvc mockMvc
@Before
void setupMockMvc() {
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext)
.apply(springSecurity())
.build()
}
protected ResultActions makePost(final String uri, final Object dto) {
mockMvc.perform(post(uri)
.contentType(MediaType.APPLICATION_JSON_UTF8)
.content(dtoToJson(dto))
)
}
private String dtoToJson(final Object dto) {
return objectMapper.writeValueAsString(dto)
}
}
這是我的測試方法:
class TestForTest extends IntegrationTest {
@WithMockUser(username = "xxx@gmail.com")
def "should reset password and send mail with proper activation link"() {
given:
def email = "user2@xxx.com"
when:
ResultActions result = makePost("/rest/user/resendActivationMail", email)
then:
1 == 1
println(result)
}
}
很奇怪,因為我感覺上下文沒有被加載,所以沒有任何嘗試這樣做。
我收到錯誤:
java.lang.IllegalArgumentException:WebApplicationContext 是必需的
at org.springframework.util.Assert.notNull(Assert.java:198)
at org.springframework.test.web.servlet.setup.DefaultMockMvcBuilder.<init>(DefaultMockMvcBuilder.java:52)
at org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup(MockMvcBuilders.java:51)
at pl.isolution.veolia.mveolia.spec.IntegrationTest.setupMockMvc(IntegrationTest.groovy:37)
Maven或IntellijIDEA有問題嗎? 這花了大約 340 毫秒,我沒有看到任何上下文加載嘗試。
我的堆棧:JAVA 11、Maven 3、Spring Boot 2.1.6、Spock 1.3-groovy-25。
有什么建議么?
好吧真可惜:) 我錯過了一個依賴。
<dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-core</artifactId>
<version>1.3-groovy-2.5</version>
<scope>test</scope>
</dependency>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.