gpt4 book ai didi

java - 测试包不读取主包中定义的 Kotlin 类

转载 作者:太空宇宙 更新时间:2023-11-03 13:43:39 25 4
gpt4 key购买 nike

我似乎无法访问 Android Studio 项目中我的 Kotlin 模块中测试包中的主要类。请注意,下面显示的所有代码都在导入到 Android 应用程序中的 Kotlin JVM 模块中。

这是我的 src/main/java 代码:

import com.google.gson.annotations.SerializedName

data class Customer(val password1: String,
val password2: String,
@SerializedName("last_name") val lastName: String,
@SerializedName("first_name") val firstName: String,
val email: String)

我在src/test/java中的测试代码:

class CreateUser {

@Test
fun createRandomUser() {
val random = Random()
val randomNumber = random.nextInt(10000000)
val customer = Customer("password", "password", "lastName", "firstName", "ted$randomNumber@gmail.com")

}
}

我的 build.gradle 代码如下所示:

buildscript {
ext.kotlin_version = '1.1.4-3'
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath 'me.tatarka:gradle-retrolambda:3.7.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}

apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'kotlin'

repositories {
mavenCentral()
jcenter()
}

dependencies {
// some other compile dependencies
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"

testCompile "org.hamcrest:hamcrest-all:1.3"
testCompile 'junit:junit:4.11'
testCompile 'org.mockito:mockito-all:1.9.5'
testCompile "org.jetbrains.kotlin:kotlin-test"
testCompile "org.jetbrains.kotlin:kotlin-test-junit"
}

task javadocJar(type: Jar) {
classifier = 'javadoc'
from javadoc
}

task sourcesJar(type: Jar) {
classifier = 'sources'
from sourceSets.main.allSource
}

artifacts {
archives sourcesJar
archives javadocJar
}

compileKotlin {
kotlinOptions {
jvmTarget = "1.6"
}
}
compileTestKotlin {
kotlinOptions {
jvmTarget = "1.6"
}
}

build.gradle 文件如下所示:

// Top-level build file where you can add configuration options 
common to all sub-projects/modules.

buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}

allprojects {
repositories {
jcenter()
maven {
url "https://jitpack.io"
credentials { username authToken }
}
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}

ext {
versionName = "0.1.1"
rxJavaVersion = "2.1.3"
okHttpVersion = "3.9.0"
retrofitVersion = "2.3.0"
rxJava2AdapterVersion = "1.0.0"
googleGsonVersion = "2.8.0"
}

我得到的错误是 gradle 无法解析 Test 类中的 Customer (Unresolved reference: Customer)。它似乎没有将主类包含到测试源目录中。然而,它在 IDE 中解析。

最佳答案

好的,我找到了解决方案。看来我必须在我的 build.gradle 中明确指定 src 文件夹,并将所有 Kotlin 代码分别放在 src/main/kotlinsrc/test/kotlin 中。

sourceSets {
main.kotlin.srcDirs = ['src/main/kotlin', 'src/main/java']
main.java.srcDirs = []
test.kotlin.srcDirs = ['src/test/kotlin', 'src/test/java']
test.java.srcDirs = ['src/test/kotlin', 'src/test/java']
}

完成后,测试开始按预期工作 - 甚至在 Jenkins 上生成报告,这很棒。

关于java - 测试包不读取主包中定义的 Kotlin 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46490063/

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