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