android – 未解决的参考:测试

我正在尝试在我当前在Kotlin中编写的android项目中编写简单的集成测试.

问题是测试没有事件启动并因以下错误而失败:

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

我试过谷歌搜索这个问题,但没有成功.

我已经尝试过的步骤:

>检查是否安装了包含InstantTaskExecutorRule的库,我可以深入了解这个包(是的,我可以)
>检查我的测试是否放在正确的文件夹中(是的,它在androidTest中)
>检查我是否正确启动了测试(可能是,我通过右键单击包pkgName(androidTest)启动它们,然后“在…中运行测试”)

我也尝试将我的源目录重命名为koltin,并将正确的值设置为sourceSets但由于没有成功而将其更改回来,并认为这不是原因.

重要的提醒:

如果我注释行导入android.arch.core.executor.testing.InstantTaskExecutorRule和所有与InstantTaskExecutorRule相关的代码(意味着整个测试逻辑将为空)并放置一个简单的断言,例如,那么一切正常.

但是我想使用这个特殊的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()
    }

}
最佳答案
根据官方谷歌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"

现在一切正常!

转载注明原文:android – 未解决的参考:测试 - 代码日志