有没有办法停止在Android检测测试Kotlin(ActivityTestRule)中启动活动



我正在使用 Kotlin 开发一个 Android 应用程序。我正在将插桩测试添加到我的项目中。现在,我正在寻找一种方法来启用/禁用启动活动的逻辑,因为它可以使我的测试以意想不到的方式运行。

这是我的测试课

@RunWith(AndroidJUnit4::class)
class LoginFormTest {
@Rule @JvmField
val loginActivityRule: ActivityTestRule<LoginActivity> = ActivityTestRule<LoginActivity>(LoginActivity::class.java)
@Before
fun setUp() {
}
@Test
fun loginFormRendersErrorMessageWhenRequestThrowsError() {
//logic
}
}

这只是测试类的签名。正如您在代码中看到的,我正在测试LoginActivity。单击按钮时,登录活动正在启动另一个活动。有没有办法禁止在测试中启动活动。然后在另一种测试方法中,我可能会再次启用它。有没有办法做到这一点?

可以使用ActivityTestRule来设置启动Intent...

然后让LoginActivity表现不同,例如。 基于Intent动作。

但是,尽管这在技术上是可行的,但这可能不是建议的方法。

不单击该按钮将消除调整应用程序代码的需求。

在任何情况下,您都无法从测试 APK 中更改调试 APK。


一种侵入性较小的方式可能是类似的:

private boolean shouldNavigate = true;
@VisisbleForTesting
public void setShouldNavigate(boolean value) {
this.shouldNavigate = value;
}

以便您可以从测试类中启用/禁用此功能。使用注释@VisisbleForTesting,这不会污染publicAPI,因为.setShouldNavigate()仅在测试时可见。

相关内容

  • 没有找到相关文章

最新更新