java.lang.RuntimeException: 无法找到 AndroidJUnit4 的委托运行器 androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner

java.lang.RuntimeException: Delegate runner androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner for AndroidJUnit4 could not be found

我是 android 测试的新手,我不知道如何解决这个问题。 尝试从我的项目中 运行 以下测试文件:

@RunWith(AndroidJUnit4::class)
class AppDatabaseTest {
  private lateinit var userDAO: UserDAO // custom DAO interface
  private lateinit var db: AppDatabase

  @Before
  fun createDb() {
    db = Room.inMemoryDatabaseBuilder(
      ApplicationProvider.getApplicationContext(),
      AppDatabase::class.java
    ).allowMainThreadQueries().build()

    userDAO = db.userDAO()
  }

  @After
  @Throws(IOException::class)
  fun closeDb() {
    db.close()
  }

  @Test
  @Throws(Exception::class)
  fun insertAndReadUser() {
    val user = User(
      1,
      "123",
      "Test Name",
      "link.to/name/image#from_the.web"
    )
    userDAO.insert(user)

    val inserted = userDAO.getByUID(1)
    assertThat(inserted).isNotNull()
  }
}

在 运行 日志中抛出以下错误:

java.lang.RuntimeException: Delegate runner androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner for AndroidJUnit4 could not be found.

Caused by: java.lang.ClassNotFoundException: androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner

这里是项目依赖:

dependencies {
    def room_version = "2.2.6"

    implementation "androidx.room:room-runtime:$room_version"
    kapt "androidx.room:room-compiler:$room_version"
    implementation "androidx.room:room-ktx:$room_version"

    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.3.2'
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.2.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    implementation 'androidx.navigation:navigation-fragment-ktx:2.3.2'
    implementation 'androidx.navigation:navigation-ui-ktx:2.3.2'
    implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0'
    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'
    implementation 'androidx.navigation:navigation-fragment-ktx:2.3.2'
    implementation 'androidx.navigation:navigation-ui-ktx:2.3.2'

    testImplementation 'com.google.truth:truth:1.1'
    testImplementation 'junit:junit:4.13.1'
    testImplementation 'androidx.test.ext:junit:1.1.2'

    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

什么可能导致此错误以及如何修复它?

Android Studio 4.1.1

我设法找到了问题所在。 事实上,我把测试文件放在了错误的文件夹, [test] 文件夹而不是 [androidTest] 文件夹。将文件移动到正确的文件夹成功解决了问题。