Espresso 测试输出在控制台中被截断,如何获得完整结果?

Dan*_*lle 9 testing android gradle output android-espresso

当输出多行测试失败时,我发现 Gradle 和 Android 插件会截断结果。例如,如果异常消息有 12 行,则控制台中只会显示 3 行。其他 12 行以及堆栈跟踪最终出现在生成的 HTML 和 XML 结果文件中,但我也希望能够将此输出放入控制台中。

以下是控制台中显示的内容:

com.company.espressoTests.tests.FailTest > thisTestWillFail[Pixel 2 - 8.1.0] FAILED 
    java.lang.Throwable: class java.lang.AssertionError
    Whoops, true != false
Run Code Online (Sandbox Code Playgroud)

以下是 Android Studio 中显示的内容、生成的 HTML 结果文件和生成的 XML 结果文件:

java.lang.Throwable: class java.lang.AssertionError
Whoops, true != false
Failed as it should

thisTestWillFail FAILED!
Steps to reproduce:
    1. Setup Complete, starting test.
    2. This is an action
    3. This is a second action
    4. More actions!
    5. Test finished.
End Actions.
(Followed by a full stack trace)
Run Code Online (Sandbox Code Playgroud)

我尝试过使用 --info、--debug 和 --stacktrace,但都没有产生结果。我还修改了单元测试的测试选项,要求提供完整的堆栈跟踪输出,甚至要求测试中的 System.out 和 System.err 输出显示在控制台上。这些选项都不会改变测试失败的输出。

我相信这与 Android 插件的关系比 Gradle 的关系更大,因为通过我们的 Appium 测试,我们能够毫无问题地执行此输出。

我们使用测试规则来捕获测试失败的异常(下例中的 t),并向其中添加一些输出,如下所示:

 Throwable newError = new Throwable(t.getClass() + "\n"
                        + t.getMessage() + "\n\n"
                        + method.getName() + " FAILED!\n"
                        + "Steps to reproduce:\n"
                        + ActionLog.instance().getActions());
                newError.setStackTrace(t.getStackTrace());
Run Code Online (Sandbox Code Playgroud)

遗憾的是,缺少 Espresso 测试选项的 Android Gradle 插件文档。有谁知道为什么这会被截断,以及我如何才能在控制台上打印这些信息?谢谢!