当使用多行输出测试失败时,我发现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
以下是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)
我尝试过使用--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());
遗憾的是,缺乏Espresso测试选项的Android Gradle插件文档。有谁知道为什么会被截断,以及如何在控制台上打印这些信息?谢谢!