2015-08-08 26 views
0

我的應用程序有一個共享選項,我試圖測試「選擇應用程序共享」活動是否已打開。我可以看到它在我的平板電腦上打開,但它沒有被我的測試所捕捉。已經嘗試過幾種可能的方式,包括貼在這裏Android測試:如何測試createChooser已打開

How to check ACTION_SEND intent is started?

,但似乎沒有任何工作的建議。請幫我弄清楚什麼是錯的。 謝謝!

活動:

Intent intencao = new Intent(Intent.ACTION_SEND); 
intencao.setType("text/plain"); 
intencao.putExtra(Intent.EXTRA_SUBJECT, "Horários de ônibus offline em NH"); 
String strAux = "Experimente esse App\n\n"; 
strAux += "https://play.google.com/store/apps/details?id=br.com.solenoide.onibus \n\n"; 
intencao.putExtra(Intent.EXTRA_TEXT, strAux); 
startActivity(Intent.createChooser(intencao, "Escolha como compartilhar")); 

測試:

public void testSomething() throws Exception { 
    solo.unlockScreen(); 
    View menuItem = atividade.findViewById(br.com.solenoide.onibus.R.id.action_compartilhar); 

    final IntentFilter intentFilter = new IntentFilter(); 
    intentFilter.addAction(Intent.ACTION_CHOOSER); 
    final ActivityMonitor receiverActivityMonitor = getInstrumentation().addMonitor(intentFilter, null, true); 

    solo.clickOnActionBarItem(menuItem.getId()); 
    final Activity shareActivity = receiverActivityMonitor.waitForActivityWithTimeout(1000); 
    assertNotNull(shareActivity); 

回答

0

您可以使用類似this

final Intent launchIntent = getStartedActivityIntent(); 
assertNotNull("Intent was null", launchIntent); 

final String payload = 
     launchIntent.getStringExtra(NextActivity.EXTRAS_PAYLOAD_KEY); 
assertEquals("Payload is empty", LaunchActivity.STRING_PAYLOAD, payload); 
+0

謝謝,但沒有奏效。我認爲這是因爲我的Activity正在擴展ActivityInstrumentationTestCase2,而不是ActivityUnitTestCase。如果我只是擴展ActivityUnitTestCase,Eclipse將不會開始測試!我從控制檯得到的最後一條消息是「將測試信息發送到Eclipse」,很長一段時間右下角的%進度保持100%,並且測試從不開始。是否有另一種方法來擴展ActivityInstrumentationTestCase2? –

+0

getStartedActivityIntent給我一個語法錯誤。它僅在將Activity擴展到ActivityUnitTestCase時可用。 –

+0

我從來沒有用Eclipse進行測試,因爲Android Studio很早以前就已經發布了。嘗試將您的IDE更改爲Android Studio。 –