代码之家  ›  专栏  ›  技术社区  ›  Wai Yan Hein

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

  •  0
  • Wai Yan Hein  · 技术社区  · 5 年前

    这是我的测试班

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

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

    0 回复  |  直到 5 年前
        1
  •  1
  •   Martin Zeitler    5 年前

    可以使用 ActivityTestRule Intent ...

    然后让 LoginActivity 意图

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

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

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


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

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