如何使用Gradle和Kotlin创建单独的测试?
我正在使用包含unit testing的Gradle开发Kotlin项目。 我想添加一些集成测试(或function测试,从来没有理解两者之间的差异),但我希望能够独立运行它们。 理想情况下,测试的来源在不同的文件夹中。
我正在使用Gradle 4.5,我的build.gradle文件看起来像这样:
buildscript { ext.kotlin_version = '1.2.21' repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } apply plugin: 'kotlin' apply plugin: 'application' mainClassName = 'xyz.bobdudan.myproject.AppKt' repositories { maven { url "http://maven.stardog.com" } mavenCentral() } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" testCompile 'io.kotlintest:kotlintest:2.0.7' }
我已经尝试了这里描述的方法为java,但它不起作用:任务也运行unit testing,但他们不能被发现,集成测试根本不执行。
我能做什么 ?
编辑:
下面是使用@ lance-java解决方案的gradle clean integTest
的结果:
:clean :compileIntegTestKotlin :compileIntegTestJava NO-SOURCE :processIntegTestResources NO-SOURCE :integTestClasses UP-TO-DATE :integTest NO-SOURCE Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0. See https://docs.gradle.org/4.5/userguide/command_line_interface.html#sec:command_line_warnings BUILD SUCCESSFUL in 1s 2 actionable tasks: 2 executed
所以没有任何执行(我确信测试应该失败)
注意:我不是一个kotlin dev,所以会写在groovy。
您可以添加另一个SourceSet
,它将自动为SourceSet
添加一个JavaCompile任务,还会为模型添加一些Configuration实例(例如,IntegTestCompile,integTestCompileOnly,integTestRuntime等)
sourceSets { integTest { java.srcDir 'src/integTest/java' resources.srcDir 'src/integTest/resources' } } configurations { integTestCompile.extendsFrom compile }
然后你可以添加另一个Test
任务
task integTest(type: Test) { testClassesDir = sourceSets.integTest.output.classesDir classpath = sourceSets.integTest.runtimeClasspath }
您可能希望将integTest
任务连接到正常的DAG
,或者您可以将其关闭并明确地调用它
check.dependsOn integTest