首页 > 解决方案 > Jetpack compose:没有方法 shouldWaitForActivitiesToComplete()

问题描述

我正处于我想为应用程序编写androidTests的状态。

阅读Testing Compose的文档,我创建了一个文件并编写了一个简单的测试来检查进度:


检查Test.kt:

class ExamineTest {

    @get:Rule
    val composeTestRule = createComposeRule()


    @Test
    fun atLaunchDefaultTextExists() {
        composeTestRule.setContent {
            Text(text = "text")
        }
        composeTestRule.onNodeWithText("text").assertIsDisplayed()
    }
}

我还按照文档中的建议添加了调试AndroidManifestapp/src/debug/启用 ComposeActivity。

但是,通过运行测试,什么都不会发生,测试也不会开始执行。

这是测试存货的状态(应用程序已构建和部署。但尚未开始运行测试。应用程序的正常执行工作正常):

展示测试卡住的案例

我错过了设置的一部分吗?测试没有运行的原因是什么?


撰写:1.0.0-alpha05 AS:4.2-canary 14

更新

在调试测试并检查它的日志后,我看到了这个错误:

No method shouldWaitForActivitiesToComplete() in 
androidx/test/runner/AndroidJUnitRunner 

标签: androidandroid-testingandroid-instrumentationandroid-jetpack-compose

解决方案


确保test:monitor并且test:core是最新的。

在 Android-test github 上查看了这个问题,我意识到这个问题可能是因为test:monitor比需要的更老。所以我做了这些步骤:

  1. 检查 Gradle 任务app:dependencies以查看test:monitor库的版本

  2. 如果它确实很旧(1.2.0不是最新的1.3.0),请找到降级它的库。

    就我而言fragment-testing,将其降级为1.2,因此我将其删除。

在确保test:monitor并且test:core是最新的之后,我终于可以运行测试了


推荐阅读