LoginSignup
1
1

More than 3 years have passed since last update.

Kotlin Multiplatformの各プラットフォームテストでcommonTestに依存しないようにする

Posted at

Kotlin Multiplatformの開発をする際に、 Spek を使ってテストを書こうとすると、最初は良かったものの後で困ることがあります、というか困ることがありましたのでその備忘録です。

具体的には以下のような状況です

  • Kotlin Multiplatformを使って、Android/iOS向けのライブラリを作る
  • Source Setは commonMain commonTest jvmMain jvmTest iosMain iosTest の6つ
  • commonTest でテストを書くためにSpekを入れる
  • jvmTest もSpekでDSLが提供されているのでSpekを使う
  • iosTest はSpekでDSLが提供されていないのでSpekが使えない
  • さらに、 iosTest 内でSpekに依存しないテストを書いても、Gradle taskの iosTestcompileTestKotlinIos を呼んでその中で commonTest のテストをしようとするため、そこでSpekのライブラリが参照できずにtaskが失敗してしまう

やりたいこととしては iosTest 内に書かれたテストがテストできればそれでいいので、なんとかGradle taskの iosTest が実行された時に commonTest をスルーできないか模索していたのですが、とりあえずこんな感じでbuild.gradleを設定してやるとスルーできました

kotlin {
  sourceSets {
    commonMain {
      ...
    }
    commonTest {
      ...
    }
    iosMain {
      ...
    }
    iosTest {
      dependsOn.remove(sourceSets.commonTest) // <- これ
    }
  }
}

正直本当にこれで大丈夫なのか自信がないですが、今のところこれで iosTest 内のテストもできるようになりました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1