2017-09-28 16 views
-1

トップレベルの関数(クラスのメンバーではありません)を持つkotlinファイルがあります。これはJavaで静的関数を持つクラスにコンパイルされます。 ユニットテスト(プラットフォームに依存しない)と計測テスト(本番動作+エスプレッソアイドリングリソース)のために、この関数の異なる実装をしたいと思います。 同じファイルをprodとtestの同じパスに置くことができますが、testとandroidTestに置くとIDEが1つのソースセットのように見えますが、どの関数を使用したいかを解決できません。 トップレベルの関数を使用しているため、DIを使用してテスト済みのクラスに異なる実装を渡すことはできません。ユニットアンドインストゥルメンテーションテストのトップレベル関数の実装方法を教えてください。

テスト用のクラスの実装とトップレベルの関数用のandroidTestの実装が異なることはありますか?

ノー運がよければ

sourceSets { 
androidTest { 
    java.srcDirs = ['src/androidTest/java'] 
    java.exclude('src/test/java/util/CoroutinesUi.kt') 
} 
test { 
    java.srcDirs = ['src/test/java'] 
} 
} 

を試してみました。

答えて

0

私はオブジェクトデリゲートを作成し、実装を取得することでこの問題を解決しました。私のトップレベル関数は、このデリゲートから現在利用可能な実装を呼び出すだけです。 その場合、基本テストで@Beforeの実装をリセットするだけでOKですが、いくつかの仮想呼び出しを取得する必要があります。

関連する問題