Android Studio + Spek集成

我正在尝试将Spek测试框架添加到我的Android Studio项目中。 按照说明在这里 ,我结束了以下添加到我的模块build.gradle

 testCompile 'org.jetbrains.spek:spek-api:1.1.5' testCompile 'junit:junit:4.12' testCompile "org.junit.platform:junit-platform-runner:1.0.0" testRuntimeOnly 'org.jetbrains.spek:spek-junit-platform-engine:1.1.5' 

然后我用@RunWith(JUnitPlatform::class)注释了我的测试。

但是,当我尝试运行测试,我得到: org.junit.platform.commons.util.PreconditionViolationException: Cannot create Launcher without at least one TestEngine; consider adding an engine implementation JAR to the classpath org.junit.platform.commons.util.PreconditionViolationException: Cannot create Launcher without at least one TestEngine; consider adding an engine implementation JAR to the classpath

任何想法我错过了什么?

2 Solutions collect form web for “Android Studio + Spek集成”

(供将来参考)
要在Android Studio中使用Kotlin和Spek + JUnit5,您需要以下内容:

项目的 build.gradle你需要有:

 buildscript { ext.kotlin_version = '1.2.10' ext.JUnit5_version = '1.0.30' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "de.mannodermaus.gradle.plugins:android-junit5:$JUnit5_version" } } 

模块的 build.gradle你需要有:

 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: "de.mannodermaus.android-junit5" android { ... sourceSets { test.java.srcDirs += 'src/test/kotlin' androidTest.java.srcDirs += 'src/androidTest/kotlin' } } project.ext { spekVersion = "1.1.5" } dependencies { ... // // TESTS testImplementation("org.jetbrains.spek:spek-api:$spekVersion") { exclude group: "org.jetbrains.kotlin" } testImplementation("org.jetbrains.spek:spek-junit-platform-engine:$spekVersion") { exclude group: "org.junit.platform" exclude group: "org.jetbrains.kotlin" } testImplementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" testImplementation junit5.unitTests() // see https://github.com/mannodermaus/android-junit5#android-studio-workarounds testCompileOnly junit5.unitTestsRuntime() } 

简单的Spek测试

 class ExampleSpekTest : Spek({ val x = 2 val y = 3 given("x = $x and y = $y") { val sum = x + y it("should be that x + y = 5") { Assert.assertEquals(5, sum) } it("should be that x - y = -1") { val subtract = x - y Assert.assertEquals(-1, subtract) } } }) 

看到
– 官方文件http://spekframework.org/
– 从IDE运行规范的官方插件https://github.com/raniejade/spek-idea-plugin
– 使用Spek框架进行测试 – BDD风格vs JUnit风格https://www.youtube.com/watch?v=asDZ_7ZUiX4
– Spek和JUnit5的简单Android配置https://gist.github.com/Mugurell/088daf42a4d60240ba6993681e0537a5

显然它不能很好地工作…我最终使用kotlintest更容易集成

  • Kotlin协同程序:测试Android Presenter时切换上下文
  • 如何在同一个文件中为Kotlin代码添加unittest并运行它?
  • kotlin mockk没有回答发现错误
  • 如何使用Gradle和Kotlin创建单独的测试?
  • @Rule>在Kotlin Junit测试中必须是公共的ValidationError
  • TestScheduler不起作用(Kotlin + RxJava2 + mockito)
  • 在kotlinunit testing中获得lambda捕获器的调用计数
  • 测试两个目录树的相等性
  • doReturn不作为代理,但调用我的方法
  • 运行多个测试(Kotlin)时,只有第一个测试通过TestScheduler,
  • Mockito可以在方法调用时根据它们的值validation参数吗?
  • Kotlin language will be the best programming language for Android.