1

Android JUnit Test ランナーを使用して、Android 2.3.3 プロジェクトのテストを書いていますが、アサーションの失敗トレースに奇妙な結果が見られます。簡単な例を次に示します。

import junit.framework.TestCase;

public class TU_Test extends TestCase {

    public void testStuff() {
        assertEquals("aft", "af");
    }

}

アサーションは明らかに失敗します。Eclipse からコピーしたトレースを次に示します。

junit.framework.ComparisonFailure: expected:<...t> but was:<...>
at com.redprairie.test.TU_Test.testStuff(TU_Test.java:33)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448)

表示された期待値と実際の値はあまり役に立ちません... 2つの間の違い/欠落した文字を表示しているようですが、それぞれの完全な値を見ることができればもっと役に立ちます. 私は通常 (JUnit 4 を使用し、Android Test Runner を使用していません)、Eclipse で失敗のトレースをダブルクリックして、2 つの結果の差分を確認できます。Android Test Runner と JUnit 3 スタイルのテストを使用してこれを達成する方法はありますか? 常にブレークポイントを設定するのは面倒です。

ありがとう!

4

2 に答える 2

0

ComparisonFailure をキャッチしようとしましたか? 例外オブジェクトで getActual() および getExpected() を呼び出して、値を確認できます。

次の javadoc を見てください: http://kentbeck.github.com/junit/javadoc/4.10/org/junit/ComparisonFailure.html

于 2012-09-10T13:42:30.537 に答える
0

これに対する実際の解決策を見つけることができなかったので、アサーションをラップして、次のように自分でメッセージを作成するだけになりました。

private void _assertEquals(String expected, String actual) {
    assertEquals("expected <" + expected + "> but was <" + actual + ">", expected, actual);
}
于 2012-09-11T13:02:33.530 に答える