如何让AssertTrue指示测试失败的原因,如AssertEquals



AssertEquals

assertEquals(5,assignment.getAssignment());

结果在:

Running tests
Test running started
junit.framework.AssertionFailedError: expected:<5> but was:<1       1       1       1       1       >
at com.it030.numbersequences.AssignmentTest.testAssignmentAndPossibleAnswers(AssignmentTest.java:12)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1729)

很明显出了什么问题。


断言真

Assert.assertTrue(assignment.getAssignment().replaceAll("\s", "")
    .matches("^1(1((1){3}|235)|361015)$"));

结果在:

Running tests
Test running started
junit.framework.AssertionFailedError
at com.it030.numbersequences.AssignmentTest.testAssignmentAndPossibleAnswers(AssignmentTest.java:14)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1729)

目前尚不清楚出了什么问题。

所有assert*方法都有一个变体,您可以在其中添加测试失败时显示的String。

因此,只需使用此消息添加一条具有更多失败上下文的消息。

 public static void assertTrue(String message,
                          boolean condition)

示例:

String replaced = assignment.getAssignment().replaceAll("\s", "");
String msg = replaced+" does not match regexp ^1(1((1){3}|235)|361015)$";
Assert.assertTrue(msg , replaced
      .matches("^1(1((1){3}|235)|361015)$"));

结果在:

Running tests
Test running started
junit.framework.AssertionFailedError: 2461016 does not match regexp ^1(1((1){3}|235)|361015)$
at com.it030.numbersequences.AssignmentTest.testAssignmentAndPossibleAnswers(AssignmentTest.java:18)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1729)

最新更新