为什么IntelliJ Idea不能识别我的Spek测试?

我有一个基于Gradle的Kotlin项目,其中包含一些基于JUnit的Spek测试,并且应该与Idea兼容。

但是我没有看到上下文菜单中的“运行”菜单项。

上下文菜单

为什么? 为了能像其他JUnit测试一样在Idea中运行Spek测试,我需要做些什么?

这是我的build.gradle

 buildscript { ext.kotlin_version = '1.0.4' repositories { mavenCentral() maven { url "https://dl.bintray.com/jetbrains/spek" } } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.0-M3' } } apply plugin: "kotlin" apply plugin: "application" apply plugin: 'org.junit.platform.gradle.plugin' junitPlatform { filters { engines { include 'spek' } } } mainClassName = "com.mycompany.myproduct.AppKt" sourceSets { deploy } repositories { mavenCentral() maven { url "https://dl.bintray.com/jetbrains/spek" } } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" compile 'org.telegram:telegrambots:2.4.2' compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.0' compile group: 'ch.qos.logback', name: 'logback-core', version: '1.1.3' compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.1.3' compile group: 'org.slf4j', name: 'slf4j-api', version: '1.6.1' testCompile 'junit:junit:4.11' testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version" testCompile group: 'org.mockito', name: 'mockito-all', version: '2.0.2-beta' testCompile 'org.jetbrains.spek:spek-api:1.1.19' testRuntime 'org.jetbrains.spek:spek-junit-platform-engine:1.1.19' } test.testClassesDir = project.tasks.compileTestKotlin.destinationDir task wrapper(type: Wrapper) { gradleVersion="3.1" } run { jvmArgs = ["-Xmx100m", "-XX:+HeapDumpOnOutOfMemoryError", "-XX:HeapDumpPath=/[...]/log/memdump.log"] } jar { manifest { attributes 'Main-Class': mainClassName, 'Class-Path': configurations.runtime.files.collect {"$it.name"}.join(' ') } } 

你有没有安装IntelliJ的Spek插件 ?

只需在IntelliJ插件设置中搜索spek

既然你使用的是Junit 4.11,你可以从你的build.gradle中删除它:

 junitPlatform { filters { engines { include 'spek' } } } 

然后在你的测试类声明上面添加这个:

 @RunWith(JUnitPlatform::class) 

资料来源: http : //spekframework.org/docs/latest/#setting-up-legacy