単体テストを行っているAndroidアプリがあります。それぞれ複数のテストメソッドを持つ4つのテストクラスがあります。テストスイートからすべて同時に実行します。エミュレーターで、テストの実行中にテストがフリーズするという問題が発生しました。実際のデバイスを使用するように切り替えたところ、問題は解決しました。
数週間早送りすると、デバイスでテストを実行しているときに同じ問題が発生しません。私はここ数日Googleを利用して解決策を見つけようとしていますが、何も役に立ちませんでした。
問題
すべてのテストを実行しようとすると、最終的にテストがフリーズします。そして、フリーズとは、テスト自体がフリーズすることを意味します。私はそれが電話か日食かもしれないという1つの解決策を見ました。私は自分の電話を再起動し、Eclipse自体を含むEclipseのすべてを更新しました。ビューを変更して、日食ビューが更新されていないかどうかを確認しましたが、いずれも役に立ちませんでした。また、v3の代わりにjunitv4ライブラリを使用してみました。
テストメソッドを個別に実行すると、すべて実行されて合格します。テストスイートからすべてを実行した場合にのみ、失敗します。
ログ
私はログをチェックしました、そしてこれは私が得るものです:
03-13 12:11:04.526: I/TestRunner(23175): started: testCheckShowDialogEnabled(com.package.name.MainActivityTest)
その後、ログには他に何もありません。
デバイス
上アプリが終了し、画面から削除されます。次のテストの開始時に再開されませんでした。
コード
これは私が関連すると思うコードです。さらにコードが必要な場合は、私に知らせてください。
public class AllTests extends TestSuite {
public static Test suite() {
TestSuite suite = new TestSuite();
suite.addTestSuite(MainActivityTest.class);
suite.addTestSuite(DatabaseHandlerTest.class);
suite.addTestSuite(ClassOneTest.class);
suite.addTestSuite(AnotherActivityTest.class);
return suite;
}
}
public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> {
public MainActivityTest() {
super("com.package.name", MainActivity.class);
}
@Override
public void setUp() throws Exception {
super.setUp();
mMainActivity = getActivity();
mSolo = new Solo(getInstrumentation(), mMainActivity);
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
mMainActivity = null;
}
// all the test methods
}
私のすべてのテストクラスは、同様に実装setup()
しtearDown()
ます。
私のテストがフリーズし続ける理由を知っている人はいますか?ヘルプや提案は大歓迎です。