为多文件测试套件正确启用 AccessibilityChecks
Properly enable AccessibilityChecks for multi-file test suite
我正在努力思考设置 Android Espresso 的 AccessibilityChecks
的正确方法。文档建议我只在 @Before
设置方法中调用 AccessibilityChecks.enable()
。问题是,如果您在 class 中有多个测试,第二个测试 运行 将抛出一个异常警告,表明 AccessibilityChecks
已经启用。您可以通过在 @BeforeClass
静态设置方法中调用它来解决此问题。但是,如果您有另一个应该启用 AccessbililtyChecks
的测试,您将得到同样的错误。 AccessibilityChecks.enable()
创建一个 global 视图断言,据我所知无法禁用或删除。
我目前的解决方法是在所有其他测试 (运行 之前进行 Espresso 测试 (AAA_AccessibilityTest.java
),并且我不会在其他任何地方启用它。
问题是如果我专注于特定的测试集,辅助功能检查将不会 运行,因为该测试不包括在内。
也许来自 Android 的人可以在这里权衡一下,但我无法在 Github 或其他地方找到任何工作示例,表明它在一个重要的测试套件中使用.
AccessibilityChecks.enable()
的意图很棒,但是在我们 enable()
他们之后,没有办法 disable()
他们的实现似乎完全失败了。我错过了什么吗?我怎样才能以可靠和理智的方式使用它?
您可以在自定义测试运行程序中启用它(在 Java 中):
public class AccessibilityChecksTestRunner extends AndroidJUnitRunner {
static {
AccessibilityChecks.enable();
}
}
或在 Kotlin 中
class AccessibilityChecksTestRunner : AndroidJUnitRunner() {
init {
AccessibilityChecks.enable()
}
}
在build.gradle
中使用:
testInstrumentationRunner "com.example.AccessibilityChecksTestRunner"
这是一个老问题,但如果有人想使用 TestRule
而不是自定义 TestRunner
,您可以执行以下操作:
创建 TestRule
:
class AccessibilityChecksTestRule : TestWatcher() {
@BeforeClass
fun enableAccessibilityChecks() {
AccessibilityChecks.enable()
}
}
在你的测试中class:
@RunWith(AndroidJUnit4::class)
class YourInstrumentationTest {
@get:Rule val accessibilityChecksTestRule = AccessibilityChecksTestRule()
…
}
最后,在 build.gradle
中,您将使用默认值 androidx
TestRunner
:
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
我正在努力思考设置 Android Espresso 的 AccessibilityChecks
的正确方法。文档建议我只在 @Before
设置方法中调用 AccessibilityChecks.enable()
。问题是,如果您在 class 中有多个测试,第二个测试 运行 将抛出一个异常警告,表明 AccessibilityChecks
已经启用。您可以通过在 @BeforeClass
静态设置方法中调用它来解决此问题。但是,如果您有另一个应该启用 AccessbililtyChecks
的测试,您将得到同样的错误。 AccessibilityChecks.enable()
创建一个 global 视图断言,据我所知无法禁用或删除。
我目前的解决方法是在所有其他测试 (运行 之前进行 Espresso 测试 (AAA_AccessibilityTest.java
),并且我不会在其他任何地方启用它。
问题是如果我专注于特定的测试集,辅助功能检查将不会 运行,因为该测试不包括在内。
也许来自 Android 的人可以在这里权衡一下,但我无法在 Github 或其他地方找到任何工作示例,表明它在一个重要的测试套件中使用.
AccessibilityChecks.enable()
的意图很棒,但是在我们 enable()
他们之后,没有办法 disable()
他们的实现似乎完全失败了。我错过了什么吗?我怎样才能以可靠和理智的方式使用它?
您可以在自定义测试运行程序中启用它(在 Java 中):
public class AccessibilityChecksTestRunner extends AndroidJUnitRunner {
static {
AccessibilityChecks.enable();
}
}
或在 Kotlin 中
class AccessibilityChecksTestRunner : AndroidJUnitRunner() {
init {
AccessibilityChecks.enable()
}
}
在build.gradle
中使用:
testInstrumentationRunner "com.example.AccessibilityChecksTestRunner"
这是一个老问题,但如果有人想使用 TestRule
而不是自定义 TestRunner
,您可以执行以下操作:
创建 TestRule
:
class AccessibilityChecksTestRule : TestWatcher() {
@BeforeClass
fun enableAccessibilityChecks() {
AccessibilityChecks.enable()
}
}
在你的测试中class:
@RunWith(AndroidJUnit4::class)
class YourInstrumentationTest {
@get:Rule val accessibilityChecksTestRule = AccessibilityChecksTestRule()
…
}
最后,在 build.gradle
中,您将使用默认值 androidx
TestRunner
:
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"