2012-07-09 71 views
0

我正在为使用3个按钮编写的活动编写活动测试。其中2个按钮启动其他活动。从一个android活动测试中,我该如何完成我的主要活动开始的另一个活动?

我可以编写一个测试,模拟按钮推送,然后检查是否所需的活动正在运行,但我不能从第二个活动回来。第二个活动停留在前面,并阻止假设第一个活动正在运行的其他测试正常工作。他们只是有点冻结。

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

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

它特别是关于测试活动。在生产代码中一切都很好。

回答

2

你或许应该使用http://developer.android.com/reference/android/app/Instrumentation.ActivityMonitor.html获得第二个活动的参考,也可以阻止系统启动(但你仍是存在保证该开始第二次活动逸岸的呼叫已经达到,直到框架)的第二项活动。

+0

+1这是正确的方法,代码示例,检查出这个答案(http://stackoverflow.com/questions/9405561/test-if-a-button-starts-a-new-activity-in- Android的JUnit的-PREF-不-robotium)。 – yorkw 2012-07-12 20:59:46

0

您需要一种让您的活动彼此沟通的方式,以便一项活动可以告诉其他人完成。有几种方法可以实现这一点。一种方法是在我的应用程序中创建一项服务;我的“第二次”活动将连接到此服务以注册接收消息的方式,并且我的主要活动将连接以提供它们。

+0

那么在这种情况下,用户会做一些事情,如按下按钮或点击回来,第二个活动自行完成,然后回到第一个活动。这一切都在生产中正常运行,问题是如何从第一个活动的测试中完成第二个活动。 – Kurt 2012-07-09 11:59:39

0

在活动1添加下列启动活性2

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

在活性2添加下列启动活动1,完成活性2

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

有关详细信息:http://www.warriorpoint.com/blog/2009/05/24/android-how-to-switch-between-activities/

+0

大家好,工作正常。我的问题是针对Activity1的活动测试。我可以验证它是否启动Activity2,但Activity2只是停留在那里,以防止其他Activity1测试运行。 – Kurt 2012-07-09 11:57:50

+0

请发布您的代码,这将有助于更有效地回答您 – Ponmalar 2012-07-09 11:59:53

0
  • 如果你使用startActivityForResult开始活动,然后你可以c使用finishActivity(int requestCode)失去父母的活动。

    要启动活动:
    startActivityForResult(new Intent(...), 123123 /*requestCode*/);

    而且当你要完成该活动(从主叫方),用途:
    finishActivity(123123 /*requestCode*/)

  • 也有是找到一种方法,无论是儿童活动完成与否。但是,只有在小孩活动完成后才能跟踪此情况。要接收孩子的孩子完成请求,您需要覆盖父活动中的finishFromChild()方法。

+0

我的问题是关于从活动测试中完成的。如果我有一个ActivityOne测试,并且我想测试ActivityOne上的一个按钮是否启动ActivityTwo,那么这个按钮就可以工作,但是没有其他测试可以运行,因为ActivityTwo坐在前台。 – Kurt 2012-07-12 17:13:16

+0

开始新测试之前,您可以为ActivityTwo调用finishAcitivity()。 – Karan 2012-07-13 03:51:09

相关问题