gpt4 book ai didi

android - 有没有办法停止在 Android 仪器测试 Kotlin (ActivityTestRule) 中启动 Activity

转载 作者:行者123 更新时间:2023-11-29 22:49:13 24 4
gpt4 key购买 nike

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

这是我的测试课

@RunWith(AndroidJUnit4::class)
class LoginFormTest {
@Rule @JvmField
val loginActivityRule: ActivityTestRule<LoginActivity> = ActivityTestRule<LoginActivity>(LoginActivity::class.java)

@Before
fun setUp() {
}

@Test
fun loginFormRendersErrorMessageWhenRequestThrowsError() {
//logic
}
}

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

最佳答案

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

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

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

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

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


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

private boolean shouldNavigate = true;

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

这样您就可以在测试类中启用/禁用它。使用注释 @VisisbleForTesting,这不会污染 public API,因为 .setShouldNavigate() 仅在测试时可见。

关于android - 有没有办法停止在 Android 仪器测试 Kotlin (ActivityTestRule) 中启动 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58107366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com