5

このShakeActivityに基づくアクティビティから始めており、そのための単体テストをいくつか作成したいと思います。以前にAndroidアクティビティの小さな単体テストをいくつか作成しましたが、ここからどこから始めればよいかわかりません。加速度計にいくつかの異なる値を供給し、アクティビティがそれにどのように反応するかをテストしたいと思います。今のところ、私はそれを単純に保ち、「シェイク」イベントが発生したときにプライベートintカウンター変数とTextViewを更新するだけです。

したがって、私の質問は主にこれに要約されます:

ユニットテストから偽のデータを加速度計に送信するにはどうすればよいですか?

4

5 に答える 5

5

これに対する私の解決策は、予想よりもはるかに簡単になりました。加速度計によって発生したイベントに対するアプリケーションの応答をテストしているので、実際には加速度計をテストしていません。それに応じてテストする必要がありました。私のクラスはSensorListenerを実装しており、onSensorChanged で何が起こるかをテストしたかったのです。重要なのは、いくつかの値をフィードして、アクティビティの状態を確認することでした。例:

public void testShake() throws InterruptedException {
    mShaker.onSensorChanged(SensorManager.SENSOR_ACCELEROMETER, new float[] {0, 0, 0} );
    //Required because method only allows one shake per 100ms
    Thread.sleep(500);
    mShaker.onSensorChanged(SensorManager.SENSOR_ACCELEROMETER, new float[] {300, 300, 300});
    Assert.assertTrue("Counter: " + mShaker.shakeCounter, mShaker.shakeCounter > 0);
}
于 2010-05-11T19:18:52.527 に答える
4

単体テストから偽のデータを加速度計に送信するにはどうすればよいですか?

私の知る限り、できません。

シェイカー ロジックがプラグ可能なデータ ソースを受け入れるようにします。単体テストでは、モックを提供します。本番環境では、加速度計の周りにラッパーを提供します。

または、シェーカー自体の単体テストについて心配するのではなく、シェーカーを使用するものの単体テストについて心配し、モック シェーカーを作成します。

于 2010-05-11T00:00:00.360 に答える
1

さて、あなたはインターフェースを書くことができます。

interface IAccelerometerReader {
    public float[] readAccelerometer();
}

AndroidAccelerometerReaderとを書きFakeAccelerometerReaderます。あなたのコードは使用IAccelerometerReaderしますが、Android または Fake リーダーで交換できます。

于 2010-05-11T19:08:53.003 に答える