0

静的変数を含む多くのレガシー コードを含むコード ベースの自動テスト (Robotium with ActivityInstrumentationTestCase2) を作成しており、各テストで開始する状態が同じであることを確認したいと考えています。

静的変数をクリアする方法は、プロセス全体を強制終了してから再起動することです。これはアプリケーション自体ではうまく機能しますが、テスト プロジェクトを実行すると、コンソールに "Crash of app com. _ running instrumentation" が表示され、logcat に次の行が表示されます。

03-05 11:08:01.113: I/ActivityManager(70): Process com.____________ (pid 662) has died.
03-05 11:08:01.113: W/ActivityManager(70): Crash of app com.___________ running instrumentation

変数をクリアする別の方法があるかどうか (変数を 1 つずつ確認する必要はありません)、またはこの問題を解決する別の方法があるかどうかは誰にもわかりませんか?

logcat からさらにいくつかの行を次に示します。

03-05 11:07:59.553: D/____________(662): NEW STATE FROM SERVICE: STATE_SHUTTING_DOWN
03-05 11:07:59.613: I/TestRunner(662): finished: testLoginCorrectUserNameIncorrectPassword(com.____________.test.LoginScreenTest)
03-05 11:07:59.613: I/TestRunner(662): passed: testLoginCorrectUserNameIncorrectPassword(com.____________.test.LoginScreenTest)
03-05 11:07:59.613: I/TestRunner(662): started: testLoginIncorrectUserName(com.____________.test.LoginScreenTest)
03-05 11:07:59.643: I/ActivityManager(70): Starting: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=com.____________/.____________ } from pid 662
03-05 11:08:00.183: D/dalvikvm(150): GC_CONCURRENT freed 185K, 51% free 2846K/5703K, external 957K/1462K, paused 3ms+102ms
03-05 11:08:01.075: D/____________(662): NEW STATE FROM SERVICE: STATE_TERMINATED
03-05 11:08:01.083: I/Process(662): Sending signal. PID: 662 SIG: 9
03-05 11:08:01.113: I/ActivityManager(70): Process com.____________ (pid 662) has died.
03-05 11:08:01.113: W/ActivityManager(70): Crash of app com.____________ running instrumentation ComponentInfo{com.____________.test/android.test.InstrumentationTestRunner}
03-05 11:08:01.123: D/AndroidRuntime(654): Shutting down VM
03-05 11:08:01.123: I/ActivityManager(70): Force stopping package com.____________ uid=10034
03-05 11:08:01.173: D/dalvikvm(654): GC_CONCURRENT freed 117K, 71% free 300K/1024K, external 0K/0K, paused 1ms+1ms
03-05 11:08:01.173: D/jdwp(654): Got wake-up signal, bailing out of select
03-05 11:08:01.173: D/dalvikvm(654): Debugger has detached; object registry had 1 entries
03-05 11:08:01.193: I/dalvikvm(654): JNI: AttachCurrentThread (from ???.???)
03-05 11:08:01.193: I/AndroidRuntime(654): NOTE: attach of thread 'Binder Thread #3' failed
03-05 11:08:01.252: W/InputManagerService(70): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@40980df8
03-05 11:08:01.372: D/dalvikvm(219): GC_EXTERNAL_ALLOC freed 14K, 50% free 2868K/5639K, external 4235K/5259K, paused 44ms

助けてくれてありがとう、

トード

4

2 に答える 2

0

ReflectionTestUtilsは役立ちますが、要件を解決しませんone-by-one

于 2013-03-07T14:51:13.830 に答える
0

悲しいことに、ここで問題が発生すると思います。インストルメンテーションを使用するときにテストとアプリケーションが同じプロセスを共有するため、これを行う簡単な方法があるとは思いません。現在の方法を使用して必要な結果を提供することはできません。一度に 1 つのテストを実行しない限り。これを adb instrument コマンドで実行し、各テストを個別に実行してからプロセスを再起動することができます。これにより、テストが遅くなります (デフォルトのテスト ランナー パッケージ検索が原因で非常に遅くなる可能性がありますが、これを変更して、特定のテストのみをスキャンするようにすることができます)。テスト用パッケージ)

あなたが持っている2番目のオプションは、スタティックをデフォルト値に設定することです。これは、どのスタティックをリセットする必要があり、どれをそのままにしておく必要があるかを自動的に知る方法がないため、常に面倒です。

于 2013-03-07T17:04:37.133 に答える