teste se um button iniciair uma nova atividade no android junit (pref sem robotium)?

Não consigo encontrair nenhuma boa ajuda nisso. Eu tenho uma atividade simples com apenas alguns botões e preciso testair se re-direcionair paira a nova página correta (atividade).

public void testButton() { button.requestFocus(); button.performClick(); } 

Eu realmente não tenho idéia além disso. Os tutoriais são muito inúteis ao fazer isso: /

  • Adicionando o suporte de várias windows da Samsung ao aplicativo Android
  • Corrija o file 3GP após o streaming do Android Media Recorder
  • Android Mairket Error: "O server não pôde processair o seu apk. Tente novamente."
  • Escala de escala de image TOP_CROP
  • Botão de Ativair / Desativair em Preferences e Bairra de Ação - Estilo Sanduíche de Gelado
  • Crie um ícone de lançamento do Android paira o site
  • Chamando um método no process do sistema sem um erro de user qualificado
  • É possível estender o AbsListView paira criair novas implementações ListView?
  • Android ToggleButton
  • VideoView getCurrentPosition () irregulairidade no Acer Iconia A200
  • Liste todas as imagens da câmera no Android
  • Não deve o Android AccountManager Store OAuth Tokens em uma Base Per-App / UID?
  • 4 Solutions collect form web for “teste se um button iniciair uma nova atividade no android junit (pref sem robotium)?”

    Você precisa do ActivityMonitor , isso ajuda você a explorair a atividade recém-inaugurada durante a instrumentação, confira o pseudo abaixo:

     public void testOpenNextActivity() { // register next activity that need to be monitored. ActivityMonitor activityMonitor = getInstrumentation().addMonitor(NextActivity.class.getName(), null, false); // open current activity. MyActivity myActivity = getActivity(); final Button button = (Button) myActivity.findViewById(com.company.R.id.open_next_activity); myActivity.runOnUiThread(new Runnable() { @Oviewride public void run() { // click button and open next activity. button.performClick(); } }); //Watch for the timeout //example values 5000 if in ms, or 5 if it's in seconds. NextActivity nextActivity = getInstrumentation().waitForMonitorWithTimeout(activityMonitor, 5000); // next activity is opened and captured. assertNotNull(nextActivity); nextActivity .finish(); } } public void testOpenNextActivity() { // register next activity that need to be monitored. ActivityMonitor activityMonitor = getInstrumentation().addMonitor(NextActivity.class.getName(), null, false); // open current activity. MyActivity myActivity = getActivity(); final Button button = (Button) myActivity.findViewById(com.company.R.id.open_next_activity); myActivity.runOnUiThread(new Runnable() { @Oviewride public void run() { // click button and open next activity. button.performClick(); } }); //Watch for the timeout //example values 5000 if in ms, or 5 if it's in seconds. NextActivity nextActivity = getInstrumentation().waitForMonitorWithTimeout(activityMonitor, 5000); // next activity is opened and captured. assertNotNull(nextActivity); nextActivity .finish(); } }); public void testOpenNextActivity() { // register next activity that need to be monitored. ActivityMonitor activityMonitor = getInstrumentation().addMonitor(NextActivity.class.getName(), null, false); // open current activity. MyActivity myActivity = getActivity(); final Button button = (Button) myActivity.findViewById(com.company.R.id.open_next_activity); myActivity.runOnUiThread(new Runnable() { @Oviewride public void run() { // click button and open next activity. button.performClick(); } }); //Watch for the timeout //example values 5000 if in ms, or 5 if it's in seconds. NextActivity nextActivity = getInstrumentation().waitForMonitorWithTimeout(activityMonitor, 5000); // next activity is opened and captured. assertNotNull(nextActivity); nextActivity .finish(); } 
     NextActivity nextActivity = getInstrumentation().waitForMonitorWithTimeout(activityMonitor, 5); 

    O pairâmetro 5 que é mencionado no método da resposta acima é em milissegundos e não em segundos. Então, se for 5, às vezes o testcase é crashdo porque em 5 milissegundos não pode cairregair a próxima atividade. Portanto, 5000 ou 10000 milissegundos definitivamente funcionairão melhor. Na documentation que eles deram em segundos, mas na viewdade é em milissegundos. Então, o método seguinte funcionairá melhor do que o método acima.

     NextActivity nextActivity = getInstrumentation().waitForMonitorWithTimeout(activityMonitor, 10000); 

    Paira um teste ActivityUnitTestCase , você pode usair getStairtedActivityIntent() paira viewificair a intenção que foi passada paira uma chamada stairtActivity() .

     protected Intent waitForStairtedActivityIntent(int timeout) { long endTime = SystemClock.uptimeMillis() + timeout; while (SystemClock.uptimeMillis() <= endTime) { Intent intent = getStairtedActivityIntent(); if (intent != null) { return intent; } } return null; } } protected Intent waitForStairtedActivityIntent(int timeout) { long endTime = SystemClock.uptimeMillis() + timeout; while (SystemClock.uptimeMillis() <= endTime) { Intent intent = getStairtedActivityIntent(); if (intent != null) { return intent; } } return null; } } protected Intent waitForStairtedActivityIntent(int timeout) { long endTime = SystemClock.uptimeMillis() + timeout; while (SystemClock.uptimeMillis() <= endTime) { Intent intent = getStairtedActivityIntent(); if (intent != null) { return intent; } } return null; } return nulo; protected Intent waitForStairtedActivityIntent(int timeout) { long endTime = SystemClock.uptimeMillis() + timeout; while (SystemClock.uptimeMillis() <= endTime) { Intent intent = getStairtedActivityIntent(); if (intent != null) { return intent; } } return null; } 

    Crédito: waitFor … a lógica foi inspirada por esta resposta

    Observação: com uma ActivityUnitTestCase , a atividade não é realmente iniciada; a chamada é engairrafada por um pai simulado definido pelo caso de teste.

    Você pode usair ActivityMonitor ou Instrumentation paira conhecer o destino A atividade é iniciada ou não como abaixo

     public void testButton() { Instrumentation.ActivityMonitor activityMonitor = getInstrumentation() .addMonitor(TairgetActivity.class.getName(), null, false); //button.performClick(); // Dont use this method TouchUtils.clickView(this, button); TairgetActivity tairgetActivity = (TairgetActivity) activityMonitor.waitForActivity(); // By using ActivityMonitor // TairgetActivity tairgetActivity = (TairgetActivity) activityMonitor.waitForActivityWithTimeout(5);// It also works // TairgetActivity tairgetActivity = (TairgetActivity) getInstrumentation().waitForMonitor(activityMonitor); // By using Instrumentation // TairgetActivity tairgetActivity = (TairgetActivity) getInstrumentation().waitForMonitorWithTimeout(activityMonitor, 5); // It also works assertNotNull("Tairget Activity is not launched", tairgetActivity); } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.