0

私はAndroidアプリケーションで参照するプレーンなJarプロジェクトを持っています。次に、単体テストクラスを作成する一般的な関数用のFunctions.javaがあります。

Functions.java内のサンプル関数は次のとおりです。

public static double getAltitudeBySensor(float atmosphericPressure) {
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD
            && atmosphericPressure > 0d) {
        return SensorManager.getAltitude(SensorManager.PRESSURE_STANDARD_ATMOSPHERE, atmosphericPressure);
    }
    return 0d;
}

public static double toPixelX(double imageSize, android.location.Location upperLeft, android.location.Location lowerRight, android.location.Location target) {
    double hypotenuse = upperLeft.distanceTo(target);
    double bearing = upperLeft.bearingTo(target);
    double currentDistanceX = Math.sin(bearing * Math.PI / OneEightyDeg) * hypotenuse;
    //                           "percentage to mark the position"
    double totalHypotenuse = upperLeft.distanceTo(lowerRight);
    double totalDistanceX = totalHypotenuse * Math.sin(upperLeft.bearingTo(lowerRight) * Math.PI / OneEightyDeg);
    double currentPixelX = currentDistanceX / totalDistanceX * imageSize;

    return currentPixelX;
}

正しい方向へのガイダンスは大歓迎です。

4

1 に答える 1

0

どちらの方法も外部コードに依存しているため、単体テストは困難です。

ロジックだけを単体テストしたい場合は、インターフェイスに依存するようにリファクタリングしてから、それらのインターフェイスを実装するモックを作成して、既知のデータを渡し、適切な出力を受け取るかどうかをテストする必要があります。

于 2011-10-10T14:06:57.463 に答える