gpt4 book ai didi

android - Robolectric:测试在应用程序运行时启动哪个 Activity

转载 作者:行者123 更新时间:2023-11-29 17:46:45 25 4
gpt4 key购买 nike

我想使用 robolectric 编写一个自动化测试,以确认在应用程序启动时启动了给定的 Activity 。

这将是我在 Freeman 和 Pryce 的 TDD 书中描述的“行走的骨架”验收测试。

测试基本上确认应用程序的主要 Intent 过滤器已正确实现:

<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

最佳答案

对我来说,这个测试一般来说没有太大值(value)。但也许这对您来说很重要。

我会访问“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" );

这只是一个例子,如果你有更多的 Intent 过滤器,请注意

关于android - Robolectric:测试在应用程序运行时启动哪个 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26072706/

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