1

複数のモジュールを含むプロジェクトがあります。モジュールの 1 つは kotlin multiplatform です。Kotest 4.1.1 を使用して単体テストを追加しようとしています。このリリースはリポジトリ mavenCentral() で公開されており、Java ライブラリ プラグインを使用しているモジュールでこのリリースを問題なく使用できます。ただし、マルチプラットフォーム モジュールで Kotest 4.1.1 を使用している場合、同期を試みるたびに失敗します。

Could not resolve io.kotest:kotest-runner-junit5-jvm:4.1.1.

なぜこれが起こっているのかわかりません。通常の kotlin jvm プラグインを使用する同じプロジェクト内の別のモジュールと kotest の同じリリースは問題なく同期できるため、このエラーは明らかに kotlin マルチプラットフォーム プラグインを使用するモジュールに固有のものです。したがって、gradle は、定義されたリポジトリでリリースを見つけ、kotest 4.1.1 を使用することができます。

結果として (当然のことですが)、kotest は multiplatform モジュールの commonTest のテスト クラスパスにないため、単体テスト クラスは io.kotest.xxx パッケージをインポートできません。

マルチプラットフォーム コードをテストするために、JVM 実行の単体テスト (junit5 を使用) で kotest を使用したいと考えていました。しかし、これはマルチプラットフォームを行う最初の試みなので、すべてが疑わしいです:-)

以下のスニペットは、マルチプラットフォーム モジュールの build.gradle.kts からの sourceSets コードです。コメント部分をそのままにしておくと、gradle は正常に同期しますが、commonTest のソースにはもちろん kotest が表示されません。コメントを削除すると、エラーが発生します

sourceSets {
    commonMain {
        dependencies {
            implementation(kotlin("stdlib-common"))
        }
    }
    /*
    commonTest {
        dependencies {
            implementation(Kotest.framework) 
        }
    }
     */
}

両方のモジュールで使用される Kotest.framework val の値は次のとおりです。

object Kotest {
    const val version = "4.1.1"
    const val framework = "io.kotest:kotest-runner-junit5-jvm:$version"
    const val assertions = "io.kotest:kotest-assertions-core-jvm:$version"
    const val propertyTest = "io.kotest:kotest-property-jvm:$version"
}

Android Studio で kotlin マルチプラットフォーム プラグインを使用しているときに kotest 4.1.1 を動作させた人はいますか? これをさらに診断する方法についてのアイデアをいただければ幸いです。前もって感謝します...

構成: Android スタジオ 4.0 Gradle 6.5.1 Kotlin 1.3.72

4

1 に答える 1