現在のAndroid= Kotlinで完全に記述されたプロジェクト)で簡単な統合テストを記述しようとしています。
問題は、テストが開始されず、次のエラーで失敗することです。
_Error:(4, 36) Unresolved reference: testing
Error:(18, 52) Unresolved reference: InstantTaskExecutorRule
Error:Execution failed for task ':app:kaptGenerateStubsDebugAndroidTestKotlin'.
> Compilation error. See log for more details
_
私はこの問題をグーグルで試しましたが、成功しませんでした。
私がすでに実行しようとした手順:
androidTest
にあります)pkgName (androidTest)
を右クリックしてから[テストを実行...]で起動します)。また、ソースdirsの名前をJavaからkoltinに変更して、適切な値をsourceSets
に設定しようとしましたが、成功しなかったために元に戻し、理由ではないと考えました。
重要なお知らせ:
行_import Android.Arch.core.executor.testing.InstantTaskExecutorRule
_とInstantTaskExecutorRule
に関連するすべてのコード(テストロジック全体が空になることを意味します)にコメントし、たとえば単純なassert
を配置すると、すべてが正常に機能します大丈夫。
しかし、私はこの特定のInstantTaskExecutorRule
を使用したいのですが、問題が実際に何であり、それを解決する方法を知りたい、または少なくともどこを探し、何をすべきかを知りたいのです。
これが私のテストコードです:
_import Android.Arch.core.executor.testing.InstantTaskExecutorRule
import Android.Arch.persistence.room.Room
import Android.support.test.InstrumentationRegistry
import Android.support.test.runner.AndroidJUnit4
import org.junit.After
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import com.myapp.storage.base.AppDataBase
@RunWith(AndroidJUnit4::class)
class UserDaoTest{
@JvmField @Rule val instantTaskExecutorRule = InstantTaskExecutorRule()
private lateinit var db: AppDataBase
@Before
@Throws(Exception::class)
fun setUp(){
db = Room.inMemoryDatabaseBuilder(InstrumentationRegistry.getContext(), AppDataBase::class.Java)
.allowMainThreadQueries()
.build()
}
@After
fun closeDB(){
db.close()
}
@Test
fun getUsersWhenNoUserInserted(){
db.userDao().allUsers()
.test().assertNoValues()
}
}
_
公式のgoogle documentation によると、次のような方法でアーキテクチャコンポーネント(LiveData)のテストヘルパーを追加する必要があります。
// Test helpers for LiveData
testImplementation "Android.Arch.core:core-testing:1.1.0"
そして、少なくとも私にとってはそれはうまくいきません。 (上記の質問を参照してください)
実際の状態:
// Test helpers for LiveData
androidTestImplementation "Android.Arch.core:core-testing:1.1.0"
これですべてうまくいきます!
私はちょうど同じ問題に直面しました、そしてそれは私がjunitの新しいバージョン、4.13-beta-3をインポートしたためでした。バージョン4.12にダウングレードした後、すべてが問題なく動作しました。
testImplementation "junit:junit:$junit
これが他の人に役立つことを願っています。