【问题标题】:From within an android activity test, how do I finish another activity that my main activity started?在 android 活动测试中,如何完成我的主要活动开始的另一个活动?
【发布时间】:2012-07-09 10:51:07
【问题描述】:

我正在为我们用 3 个按钮编写的活动编写活动测试。其中 2 个按钮可启动其他活动。

我可以编写一个模拟按钮按下的测试,然后检查所需的活动是否正在运行,但我无法从第二个活动返回。第二个活动保持在最前面并阻止假设第一个活动正在运行的其他测试正常工作。他们只是有点冻结。

我参考了第一个活动,但我猜这是我需要调用完成()的第二个活动。有没有办法做到这一点?

编辑:我在这个要点中添加了一些实际的源代码来说明我的问题:https://gist.github.com/3076103

它专门针对测试活动。在生产代码中一切都很好。

【问题讨论】:

    标签: android testing android-activity


    【解决方案1】:

    您可能应该使用http://developer.android.com/reference/android/app/Instrumentation.ActivityMonitor.html 来获取第二个活动的引用,或者您可以阻止启动第二个活动(仍然可以保证启动第二个活动的调用实际上已经到达框架)。

    【讨论】:

    • +1 这是正确的做法,代码示例请查看this answer。
    【解决方案2】:

    您需要一种方式让您的活动相互交流,以便一个活动可以告诉另一个活动完成。有几种方法可以做到这一点。一种方法是在我的应用程序中创建服务;我的“第二个”活动将连接到此服务以注册一种接收消息的方式,而我的主要活动将连接以提供它们。

    【讨论】:

    • 好吧,在这种情况下,用户做了一些事情,比如按下按钮或点击返回,然后第二个活动自行完成并返回到第一个活动。这一切在生产中都可以正常工作,问题是我如何使第二个活动从第一个活动的测试中完成。
    【解决方案3】:

    在Activity1中添加以下内容来启动Activity2

    Intent myIntent = new Intent(view.getContext(), Activity2.class);
    startActivityForResult(myIntent, 0);
    

    在 Activity2 中添加以下内容以启动 Activity1 并完成 Activity2

    Intent intent = new Intent();
    setResult(RESULT_OK, intent);
    finish();
    

    更多详情:http://www.warriorpoint.com/blog/2009/05/24/android-how-to-switch-between-activities/

    【讨论】:

    • 您好,一切正常。我的问题是 Activity1 的活动测试。我可以验证它是否启动了 Activity2,但 Activity2 只是停留在那里阻止其他 Activity1 测试运行。
    • 请发布您的代码,这将更有利于有效地回答您
    【解决方案4】:
    • 如果您使用 startActivityForResult 启动活动,则可以使用 finishActivity(int requestCode) 从父项关闭活动。

      开始活动:
      startActivityForResult(new Intent(...), 123123 /*requestCode*/);

      当您想要完成该活动(来自调用者)时,请使用:
      finishActivity(123123 /*requestCode*/)

    • 还有一种方法可以查找子活动是否已完成。但是只有当子活动为自己调用完成()时,您才能跟踪这一点。要从子节点接收子节点完成请求,您需要覆盖父活动中的finishFromChild() 方法。

    【讨论】:

    • 我的问题是关于从活动测试中进行的。如果我对 ActivityOne 进行了测试,并且我想测试 ActivityOne 上的一个按钮是否启动了 ActivityTwo,那么它可以运行,但是没有其他测试可以运行,因为 ActivityTwo 就在前台。
    • 在开始新的测试之前,可以为ActivityTwo调用finishAcitivity()。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多