我正在尝试使用 Robolectric,但无法使其工作。即使我遵循官方文档并使用像这样的准系统、超级简单的示例,也没有测试完成:
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
@RunWith(RobolectricTestRunner::class)
class ExampleRobo {
@Test
fun someTest() {
assertEquals(4, 2 + 2)
}
}
如果我运行测试,它永远不会完成,它看起来像这样 - 永远旋转......
我的开发设置:
这是我的 gradle 测试设置:
// JUnit 4 & 5
testImplementation("junit:junit:4.13.2")
testImplementation("org.junit.jupiter:junit-jupiter:5.8.1")
// JUnit vintage (so we can use simultaneously JUnit 4 & 5)
testImplementation("org.junit.vintage:junit-vintage-engine:5.8.1")
// external libraries (Mockk & Robolectric)
testImplementation("io.mockk:mockk:1.13.10")
testImplementation("org.robolectric:robolectric:4.12")
注意:我知道 JUnit5 的问题,因此我在 Robolectric 测试中仅使用 JUnit4 - 请参阅导入。我仅在其他课程测试中使用 JUnit5。
您可以使用调试器运行测试,暂停它,然后看看为什么它被卡住。 Robolectric 首先下载 Android 框架,因此很可能是下载导致了问题。您还可以像这样启用日志记录:
android {
testOptions {
unitTests {
all { test ->
test.systemProperties["robolectric.logging.enabled"] = "true"
}
}
}
}
这些文件可能会在
~/.m2/repository/org/robolectric/android-all-instrumented/
下载。