我正在使用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样式测试来实现这一目标?总是设置断点对于屁股来说是一种痛苦。
谢谢!
答案 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);
}