アプリケーションをテストするクラスはほとんどありません。4秒以上続く場合はテストに失敗したいのですが。私のコードはテストを中断しますが、場合によっては次のテストクラスを実行しません。
私が書くとき(それはタイムアウトとは何の関係もありませんが、fail()の例にすぎません):
public void testSmth() {
fail("msg");
}
失敗トレースは空であり、テストを中断して別のテストを開始します。しかし、タイムアウトのようにしたい場合は、次のようにします。
public void testSmth() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
fail("msg");
}
}, 4000);
// some tests (that even lasts more than 4 secons) like clickOnImage() etc.
}
テストは中断されますが、次のテストは実行されず、失敗トレースには次のようになります。
テストは完了まで実行できませんでした。理由:'''junit.framework.AssertionFailedError''が原因で、インストルメンテーションの実行に失敗しました。詳細については、デバイスのlogcatを確認してください
そしてLogCatで私は得ました:
07-26 11:46:07.428:E / AndroidRuntime(6195):致命的な例外:タイマー-1
07-26 11:46:07.428:E / AndroidRuntime(6195):junit.framework.AssertionFailedError:msg
07-26 11:46:07.428:E / AndroidRuntime(6195):junit.framework.Assert.fail(Assert.java:47)
07-26 11:46:07.428:E / AndroidRuntime(6195):java.util.Timer $ TimerImpl.run(Timer.java:284)
または多分私がしたいことをするためのいくつかの別の方法がありますか?
ありがとう。