2012-09-10 56 views
1

我正在爲Android 2.3.3項目編寫一些測試,使用Android JUnit Test跑步者,並且我在斷言失敗跟蹤中看到了一些奇怪的結果。這裏有一個簡單的例子:Android測試項目JUnit失敗跟蹤未顯示預期+實際

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) 

所顯示的預期+實際幫助不大...這似乎顯示差異/缺少兩者之間的字符,但如果我可以看到每個字符的完整值,則會更有幫助。我通常(使用JUnit 4 +不使用Android Test Runner)能夠雙擊Eclipse中的故障跟蹤並查看兩個結果的差異。有什麼辦法可以使用Android Test Runner來實現這一點,它是JUnit 3樣式測試嗎?總是設置斷點對屁股來說是一種痛苦。

謝謝!

回答

0

因爲我無法找到一個真正解決這個問題,我結束了剛剛包裝的斷言和構建自己的消息,像這樣:

private void _assertEquals(String expected, String actual) { 
    assertEquals("expected <" + expected + "> but was <" + actual + ">", expected, actual); 
} 
0

您是否嘗試過捕獲ComparisonFailure?您可以在異常對象上調用getActual()和getExpected()來查找值。

看看下面的javadoc:http://kentbeck.github.com/junit/javadoc/4.10/org/junit/ComparisonFailure.html

+0

我給了它一個嘗試,但Android需要使用JUnit 3,而拋出的ComparisonFailure不包含這些方法。你列出的鏈接是用於JUnit 4 :( – chinabuffet

+0

糟糕,你的權利。版本3只包含getMessage():( – nmb

相關問題