未解决的引用:testing

3 浏览
0 Comments

未解决的引用:testing

我正在尝试在我的现有Android项目中编写简单的集成测试,该项目完全使用Kotlin编写。问题是测试甚至无法启动,并出现以下错误:

错误:(4, 36)未解析的引用:testing

错误:(18, 52)未解析的引用:InstantTaskExecutorRule

错误:执行任务 ':app:kaptGenerateStubsDebugAndroidTestKotlin' 失败。

> 编译错误。请查看日志以获取更多详细信息。

我已经尝试在网上搜索解决此问题的方法,但没有成功。

我已经尝试过的步骤:

  1. 检查包含InstantTaskExecutorRule的库是否已安装,并且我可以进入此包(是的,可以)
  2. 检查我的测试是否放置在正确的文件夹中(是的,它位于androidTest中)
  3. 检查我是否正确启动了我的测试(可能是的,我通过右键单击包pkgName(androidTest),然后选择“在...中运行测试”来启动它们)

我还尝试将我的源目录从Java重命名为Kotlin,并设置正确的值给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()

}

}

0