[英]Robolectric: Test which Activity is launched when application is run
我想使用robolectric编写一个自动化测试,确认在应用程序启动时启动给定的活动。
这将是我在Freeman和Pryce的TDD书中描述的“行走骨架”验收测试。
测试基本上确认应用程序的主要意图过滤器是否正确实现:
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
我知道这是一项几乎不值得做的测试,但这就是“行走骨架”测试的重点 - 而且我觉得这是值得做的。
怎么可以这样做? robolectric提供的“hello world”测试是这样的:
@Before
public void setup()
{
this.activity = Robolectric.buildActivity(MainActivity.class).create().get();
}
@Test
public void shouldHaveHappySmiles() throws Exception
{
String appName = this.activity.getString(R.string.app_name);
assertThat(appName, equalTo("MyApp"));
}
上面运行MainActivity
并测试它的属性。 相反,我怎么能断言当应用程序启动时,它实际上启动了MainActivity
?
至于我,这个测试一般没有多大价值。 但也许这对你的情况很重要。
我将访问`AndroidManifest'并使用'IntentFilter'检查特定的'ActivityData':
AndroidManifest appManifest = Robolectric.getShadowApplication().getAppManifest();
ActivityData activityData = appManifest.getActivityData( "<yourpackage>.MainActivity" );
List<IntentFilterData> intentFilters = activityData.getIntentFilters();
IntentFilterData data = intentFilters.get( 0 );
assertThat( data.getActions() ).contains( "android.intent.action.MAIN" );
assertThat( data.getCategories() ).contains( "android.intent.category.LAUNCHER" );
这只是示例,如果您有更多的意图过滤器,请注意
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.