簡體   English   中英

Robolectric:測試應用程序運行時啟動哪個Activity

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM