JUnit5とSpockを同じプロジェクトで使う
JUnit5の環境でSpockを使いたいときのメモ。
追記
Spock 2.0からはJUnit5で動作するので、JUnit4の設定は不要。
https://spockframework.org/spock/docs/2.0/release_notes.html
ソースコード
build.gradle
plugins { id 'org.springframework.boot' version '2.4.5' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' id 'groovy' } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = JavaVersion.VERSION_11 repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' testImplementation 'org.spockframework:spock-core:1.3-groovy-2.5' testImplementation 'org.spockframework:spock-spring:1.3-groovy-2.5' testImplementation 'org.codehaus.groovy:groovy-all:2.5.14' } test { useJUnitPlatform() testLogging { showStandardStreams = true } }
HelloController.java
@RestController public class HelloController { @GetMapping("/hello") public Map<String, String> hello() { return Map.of("message", "Hello!"); } }
HelloControllerTest.groovy
@WebMvcTest(controllers = HelloController.class) class HelloControllerTest extends Specification { @Autowired MockMvc mvc def "hello"() { expect: mvc.perform(get("/hello")) .andExpect(status().isOk()) .andExpect(content().json(""" { "message":"Hello!" } """)) } }