Android测试项目JUnit失败跟踪未显示预期+实际

时间:2012-09-10 13:27:06

标签: java android testing junit

我正在使用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)

显示的预期+实际不是很有帮助...它似乎显示两者之间的差异/缺失字符,但如果我能看到每个的完整值会更有帮助。我通常(使用JUnit 4 +不使用Android Test Runner)能够双击Eclipse中的故障跟踪并查看两个结果的差异。有没有办法使用Android Test Runner和它的JUnit 3样式测试来实现这一目标?总是设置断点对于屁股来说是一种痛苦。

谢谢!

2 个答案:

答案 0 :(得分:0)

你试过捕捉ComparisonFailure吗?您可以在异常对象上调用getActual()和getExpected()来查找值。

查看以下javadoc:http://kentbeck.github.com/junit/javadoc/4.10/org/junit/ComparisonFailure.html

答案 1 :(得分:0)

由于我找不到真正的解决方案,我最终只是自己包装断言并自己构建消息:

private void _assertEquals(String expected, String actual) {
    assertEquals("expected <" + expected + "> but was <" + actual + ">", expected, actual);
}
相关问题