标签: java-test-fixtures

Gradle 测试装置插件和核心模块依赖项

我有一个使用 Gradle 6.4 版和 JDK 8 构建的项目。我正在尝试将 Gradle插件用于测试装置( java-test-fixtures),但我在依赖项方面遇到了一些问题。

根据上面链接的 Gradle 页面,该项目的结构应如下所示:

core-module
-- src
   -- main
      -- java
   -- test
      -- java
   -- testFixtures
      -- java
Run Code Online (Sandbox Code Playgroud)

虽然该build.gradle.kts文件具有以下依赖项部分:

core-module
-- src
   -- main
      -- java
   -- test
      -- java
   -- testFixtures
      -- java
Run Code Online (Sandbox Code Playgroud)

现在,在testFixtures/java源文件夹中的 IntelliJ(我正在使用的 IDE)类中查看源文件夹中的类main/java。所以我可以在下面添加新的 Java 类testFixtures/java,这些类依赖于main. 但是,我将无法从外部库导入依赖项com.my.external.project:1.0。当我尝试运行 Gradle 任务时,问题得到确认compileTestFixturesJava

我可以复制该dependencies部分中的条目;例如我可以添加:

dependencies {
    api("com.my.external.project:1.0")
    // ... more API dependencies

    testFixturesCompileOnly(project(":core-module")) …
Run Code Online (Sandbox Code Playgroud)

java dependency-management gradle gradle-kotlin-dsl java-test-fixtures

8
推荐指数
1
解决办法
2854
查看次数

使用 java-test-fixtures 模块时,如何从测试中测试声明为“internal”的 kotlin 函数

我试图在我的 kotlin 项目中使用测试装置。不幸的是,我在工具链的一个组件中遇到了一个奇怪的问题,可能是一个错误(不确定是哪个)。

通常,可以从同一包中的单元访问已main声明的 Kotlin 函数。有许多证据支持这一说法,尤其是Kotlin:使单元测试可见的内部函数internaltest

事实上,如果我们有src/main/kotlin/ main.kt

@file:JvmName("Main")
package org.example.broken_test_fixtures

internal fun sayHello(who: String): String = "Hello, $who!"

fun main() {
    println(sayHello("world"))
}
Run Code Online (Sandbox Code Playgroud)

src/test/kotlin/SayHelloTest.kt

package org.example.broken_test_fixtures

import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test

class SayHelloTest {
    @Test
    fun testSayHello() {
        val expected = "Hello, world!"
        val actual = sayHello("world")
        assertEquals(actual, expected)
    }
}
Run Code Online (Sandbox Code Playgroud)

测试通过常规build.gradle.kts成功通过:

plugins {
    kotlin("jvm") version "1.3.61"
}


group = "org.example"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral() …
Run Code Online (Sandbox Code Playgroud)

unit-testing gradle kotlin java-test-fixtures kotlin-gradle-plugin

6
推荐指数
1
解决办法
519
查看次数