gpt4 book ai didi

kotlin - Kotlin类的Gradle集成测试任务

转载 作者:行者123 更新时间:2023-12-02 12:56:29 25 4
gpt4 key购买 nike

我有一个Kotlin的Gradle项目,带有3个源文件夹(主要,测试,集成)。我想为单元测试和集成测试设置不同的Gradle测试任务。那是那些测试和集成文件夹的用途。我尝试了几种解决方案来设置集成测试任务,但到目前为止没有任何效果。到处都提到我需要创建一个不同的sourceSet进行集成,添加一些配置以能够正确地编译该文件夹中的代码并设置任务本身。一切都完成了,但是当我运行测试时,它们失败了。然后该报告说ClassNotFound基本上包含了那个(集成)文件夹中的所有内容。
build.gradle文件和输出结果附在下面

buildscript {
ext.kotlin_version = '1.3.71'
ext.ktor_version = '1.3.2'
ext.exposed_version = '0.22.1'
ext.kodein_version = '6.5.0'
ext.postgres_version = '42.2.6'
ext.stripe_version = '17.16.0'
ext.junit_version = '5.6.0'
ext.log4j2_version = '2.13.1'
ext.aws_sdk_version = '1.11.734'
ext.html_to_pdf_version = '1.0.0'
ext.kotlintest_version = '4.0.2'

repositories {
maven { url "https://kotlin.bintray.com/kotlinx" }
maven { url "https://repository.jboss.org/nexus/content/repositories/thirdparty-releases/" }
mavenCentral()
maven { url "https://plugins.gradle.org/m2/" }
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "javax.jms:jms:1.1"
}
}

plugins {
id("java")
id 'org.jetbrains.kotlin.jvm' version '1.3.71'
id 'org.jetbrains.kotlin.plugin.serialization' version '1.3.71'
id("application")
}

group 'nz.co.redium'

mainClassName = 'nz.co.redium.bookmybusiness.ApplicationKt'

repositories {
mavenCentral()
jcenter()
maven { url "https://dl.bintray.com/kotlin/ktor" }
}

compileKotlin {
kotlinOptions.jvmTarget = "12"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "12"
}

sourceSets {
integration {
java.srcDir "$projectDir/src/integration/kotlin"
kotlin.srcDir "$projectDir/src/integration/kotlin"
resources.srcDir "$projectDir/src/integration/resources"
compileClasspath += main.output + test.output
runtimeClasspath += main.output + test.output
}
}

configurations {
integrationImplementation.extendsFrom testImplementation
integrationRuntime.extendsFrom testRuntime
}

test {
useJUnitPlatform()

afterTest { desc, result ->
println "Executing test ${desc.name} [${desc.className}] with result: ${result.resultType}"
}
}

//create a single Jar with all dependencies
task fatJar(type: Jar) {
manifest {
attributes 'Implementation-Title': 'Gradle Jar File Example',
'Multi-Release': true,
'Main-Class': "$mainClassName"
}
project.archivesBaseName = project.name + '-full'
from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}

task integrationTest(type: Test) {
useJUnitPlatform()

description = 'Runs the integration tests.'
group = 'verification'
testClassesDirs = sourceSets.integration.output.classesDirs
classpath = sourceSets.integration.runtimeClasspath
outputs.upToDateWhen { false }
mustRunAfter test

afterTest { desc, result ->
println "Executing test ${desc.name} [${desc.className}] with result: ${result.resultType}"
}
}

check.dependsOn integrationTest

dependencies {
implementation "io.ktor:ktor-server-core:$ktor_version"
implementation "io.ktor:ktor-server-host-common:$ktor_version"
implementation "io.ktor:ktor-server-netty:$ktor_version"
implementation "io.ktor:ktor-jackson:$ktor_version"
implementation "io.ktor:ktor-locations:$ktor_version"
implementation "io.ktor:ktor-gson:$ktor_version"
implementation "io.ktor:ktor-client-serialization:$ktor_version"
implementation "io.ktor:ktor-client-serialization-jvm:$ktor_version"
implementation "io.ktor:ktor-client-jetty:$ktor_version"
implementation "org.kodein.di:kodein-di-generic-jvm:$kodein_version"
implementation "org.jetbrains.exposed:exposed-core:$exposed_version"
implementation "org.jetbrains.exposed:exposed-dao:$exposed_version"
implementation "org.jetbrains.exposed:exposed-jdbc:$exposed_version"
implementation "org.jetbrains.exposed:exposed-jodatime:$exposed_version"
implementation "org.postgresql:postgresql:$postgres_version"
implementation "org.apache.logging.log4j:log4j-api:$log4j2_version"
implementation "org.apache.logging.log4j:log4j-core:$log4j2_version"
implementation "org.apache.logging.log4j:log4j-slf4j-impl:$log4j2_version"
implementation "org.springframework.security:spring-security-core:5.1.5.RELEASE"
implementation "com.amazonaws:aws-java-sdk-ses:$aws_sdk_version"
implementation "com.amazonaws:aws-java-sdk-s3:$aws_sdk_version"
implementation "com.stripe:stripe-java:$stripe_version"
implementation "org.apache.velocity:velocity-engine-core:2.1"
implementation "com.openhtmltopdf:openhtmltopdf-core:$html_to_pdf_version"
implementation "com.openhtmltopdf:openhtmltopdf-pdfbox:$html_to_pdf_version"
implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.10.3"
implementation "org.jetbrains.exposed:exposed-jodatime:$exposed_version"
implementation "io.rest-assured:rest-assured:4.3.0"
implementation "org.hamcrest:hamcrest:2.2"
testImplementation "io.kotest:kotest-runner-junit5-jvm:$kotlintest_version" // for kotest framework
testImplementation "io.kotest:kotest-assertions-core-jvm:$kotlintest_version" // for kotest core jvm assertions
testImplementation "org.assertj:assertj-core:3.11.1"
testImplementation "org.junit.jupiter:junit-jupiter-api:$junit_version"
testImplementation "org.junit.jupiter:junit-jupiter-params:$junit_version"
testImplementation "io.ktor:ktor-server-tests:$ktor_version"
testImplementation "io.ktor:ktor-server-core:$ktor_version"
testImplementation "io.ktor:ktor-server-host-common:$ktor_version"
testImplementation "io.ktor:ktor-gson:$ktor_version"
testImplementation "io.mockk:mockk:1.9.3"
testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.3.5'
testRuntime "org.junit.jupiter:junit-jupiter-engine:$junit_version"
}

> Task :integrationClasses UP-TO-DATE
Skipping task ':integrationClasses' as it has no actions.
:integrationClasses (Thread[Daemon worker Thread 29,5,main]) completed. Took 0.0 secs.
:integrationTest (Thread[Daemon worker Thread 29,5,main]) started.
Gradle Test Executor 19 started executing tests.
Gradle Test Executor 19 finished executing tests.

> Task :integrationTest FAILED
file or directory '/opt/receptioner/bookmybusiness/build/classes/java/integration', not found
Caching disabled for task ':integrationTest' because:
Build cache is disabled
Task ':integrationTest' is not up-to-date because:
Task.upToDateWhen is false.
file or directory '/opt/receptioner/bookmybusiness/build/classes/java/integration', not found
Starting process 'Gradle Test Executor 19'. Working directory: /opt/receptioner/bookmybusiness Command: /usr/lib/jvm/java-13-openjdk-amd64/bin/java -Dorg.gradle.native=false @/tmp/gradle-worker-classpath16424721448345780337txt -Xmx512m -Dfile.encoding=UTF-8 -Duser.country=NZ -Duser.language=en -Duser.variant -ea worker.org.gradle.process.internal.worker.GradleWorkerMain 'Gradle Test Executor 19'
Successfully started process 'Gradle Test Executor 19'
Finished generating test XML results (0.0 secs) into: /opt/receptioner/bookmybusiness/build/test-results/integrationTest
Generating HTML test report...
Finished generating test html results (0.0 secs) into: /opt/receptioner/bookmybusiness/build/reports/tests/integrationTest
:integrationTest (Thread[Daemon worker Thread 29,5,main]) completed. Took 0.523 secs.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':integrationTest'.
> There were failing tests. See the report at: file:///opt/receptioner/bookmybusiness/build/reports/tests/integrationTest/index.html

* Try:
Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.2.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 1s
13 actionable tasks: 1 executed, 12 up-to-date


奇怪的是,失败的任务是指向classes / java / integration文件夹(不存在)而不是classes / kotlin / integratin文件夹(确实存在,这是已编译的代码所在的位置)。

最佳答案

是我不好在将代码从测试移到集成文件夹后,内部的一些资源(负责初始化类的资源)指向旧的目录测试,而不是集成。 Gradle构建文件正确。

关于kotlin - Kotlin类的Gradle集成测试任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61132601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com