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 插件文档。有谁知道为什么这会被截断,以及我如何才能在控制台上打印这些信息?谢谢!