2016-05-10 6 views
0

私はRobotiumを使用してAndroidで自動化テストを実行しています。 問題は、一連のテストを実行すると、いずれかのテストによってアプリケーションがクラッシュする場合、それ以上のテストは実行されません。理由: 'プロセスがクラッシュしたために計測が失敗しました。' '。詳細については、デバイスのlogcatを確認してください。Robotiumでアプリケーションクラッシュを処理する

私はrunTest()でtry \ catchを使用しようとしましたが、アプリケーションがクラッシュしたときに例外がスローされません。

public void runTest() throws Throwable { 
     try { 
      super.runTest(); 
     } catch (Throwable t) { 
      String testCaseName = String.format("%s.%s", getClass().getName(), getName()); 
      solo.takeScreenshot(testCaseName); 
      Logging.w(Logging.TAG.Test, String.format("Captured screenshot for failed test: %s", testCaseName)); 
      t.printStackTrace(); 
      String out = ""; 
      for (StackTraceElement s : t.getStackTrace()) { 
       out = out + s.toString() + "\n"; 
      } 
      fail(t.getMessage() + "\n" + out); 
     } 
    } 

"テストが完了するまでに失敗しました...."というメッセージが表示され、すべてのテストの実行が停止します。

現在のテストに失敗しても問題ありません。次のテストは実行されないという問題があります。誰かがこの問題を解決しましたか?テストからアプリケーション例外を処理する方法はありますか?

答えて

0

問題は、コードの内部

System.exit(0) 

でした。このようにメインアプリケーションが終了すると、そのプロセスが殺され、そのロボットと一緒にテストが殺されます(彼らは同じプロセスで生きています)。 私の解決方法は、System.exit(0)をメインアプリケーションのコードから削除することでした。

+0

アプリケーションが終了に依存している場合、System.exit(0)をfinish()に置き換えるのに役立つことがあります。 –

関連する問題