【问题标题】:Android Test Project JUnit Failure Trace Not Showing Expected + ActualAndroid 测试项目 JUnit 失败跟踪未显示预期 + 实际
【发布时间】:2012-09-03 09:09:32
【问题描述】:

我正在使用 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 样式测试来实现这一点?总是设置断点有点让人头疼。

谢谢!

【问题讨论】:

    标签: java android testing junit


    【解决方案1】:

    您是否尝试过捕获比较失败?您可以在异常对象上调用 getActual() 和 getExpected() 来找出值。

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

    【讨论】:

    • 我试了一下,但 Android 需要使用 JUnit 3,并且抛出的 ComparisonFailure 不包含这些方法。您列出的链接适用于 JUnit 4 :(
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      • 2019-12-12
      • 2021-07-29
      相关资源
      最近更新 更多