2012-11-12 4 views
7

私の方法です、それはうまく動作し、ダイアログを示しています。Androidのテスト:ダイアログ。それをチェックisShowing()

public void showDialog(){ 
    final Dialog dialog = new Dialog(this); 
    dialog.setContentView(R.layout.mylayout); 
    dialog.show(); 
} 

私はテストプロジェクトを持っており、ダイアログが表示されていることをテストしたいと思います。 .isShowing()メソッドを適用したいと思います。このようなもの...

assertTrue(dialog.isShowing()); 

しかし、テストでダイアログ変数に移動する方法はわかりません。

私はRobotiumを使用していません(これは私にとっては選択肢ではありません)。 私は現在ActivityUnitTestCaseを使ってテストしています。それ以上の情報が必要な場合は、お気軽にお問い合わせください。私はこの答えを使用してダイアログ公共

public Dialog getDiag(){ 
    return dialog; 
} 

を行うことにより、以下の答えを使用しようとしました

EDIT

:私はShowDialogのを(実行したときに私は新しい問題を抱えている)テストで、それはヒットすると壊れます:dialog.show();

android.view.WindowManager $ BadTokenException:*ウィンドウを追加することができません - トークンヌル

答えて

5

にShowDialog機能の外にダイアログを宣言し、このダイアログインスタンスを返すメソッドを実装します。

public Dialog getDiag(){ 
    return dialog; 
} 

してから、この

assertTrue(new YourClassName().getDialog().isShowing()); 
+0

私はダイアログを返すために私の方法を変更しましたありがとうように、私は、少なくとも私のテストでダイアログにアクセスすることができます何かをします。しかし、私はDialog.show()を呼び出すことができないので、私はそれを私のメソッドから取り除きました。そして、ダイアログが返された後(show)、show()を呼び出します。 –

関連する問題