有没有办法限制Flutter中的堆栈跟踪信息

迈克尔·伍尔西

我正在尝试寻找一种使Flutter单元测试失败消息对我更有用的方法。

现在,在一个简单的测试中,该测试不会做任何有用的事情,它将产生50余行的堆栈跟踪记录,这些记录对我来说都是无用的。我不在乎Flutter框架如何使我的测试运行,我不在乎我可以控制的内容,在此示例中,前两行都是如此。

目前,它会执行以下操作:

══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
The following TestFailure object was thrown running a test:
  Expected: <true>
  Actual: <false>

When the exception was thrown, this was the stack:
#4      main.<anonymous closure> (file:///D:/disclaimer_screen_test.dart:57:5)
<asynchronous suspension>
#5      main.<anonymous closure> (file:///D:/disclaimer_screen_test.dart)
#6      testWidgets.<anonymous closure>.<anonymous closure> (package:flutter_test/src/widget_tester.dart:146:29)
<asynchronous suspension>
#7      testWidgets.<anonymous closure>.<anonymous closure> (package:flutter_test/src/widget_tester.dart)
#8      TestWidgetsFlutterBinding._runTestBody (package:flutter_test/src/binding.dart:784:19)
<asynchronous suspension>
#11     TestWidgetsFlutterBinding._runTest (package:flutter_test/src/binding.dart:764:14)
#12     AutomatedTestWidgetsFlutterBinding.runTest.<anonymous closure> (package:flutter_test/src/binding.dart:1173:24)
#13     FakeAsync.run.<anonymous closure>.<anonymous closure> (package:fake_async/fake_async.dart:178:54)
#18     withClock (package:clock/src/default.dart:48:10)
#19     FakeAsync.run.<anonymous closure> (package:fake_async/fake_async.dart:178:22)
#24     FakeAsync.run (package:fake_async/fake_async.dart:178:7)
#25     AutomatedTestWidgetsFlutterBinding.runTest (package:flutter_test/src/binding.dart:1170:15)
#26     testWidgets.<anonymous closure> (package:flutter_test/src/widget_tester.dart:138:24)
#27     Declarer.test.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/declarer.dart:175:19)
<asynchronous suspension>
#28     Declarer.test.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/declarer.dart)
#33     Declarer.test.<anonymous closure> (package:test_api/src/backend/declarer.dart:173:13)
#34     Invoker.waitForOutstandingCallbacks.<anonymous closure> (package:test_api/src/backend/invoker.dart:231:15)
#39     Invoker.waitForOutstandingCallbacks (package:test_api/src/backend/invoker.dart:228:5)
#40     Invoker._onRun.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/invoker.dart:383:17)
<asynchronous suspension>
#41     Invoker._onRun.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/invoker.dart)
#46     Invoker._onRun.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/invoker.dart:370:9)
#47     Invoker._guardIfGuarded (package:test_api/src/backend/invoker.dart:415:15)
#48     Invoker._onRun.<anonymous closure> (package:test_api/src/backend/invoker.dart:369:7)
#55     Invoker._onRun (package:test_api/src/backend/invoker.dart:368:11)
#56     LiveTestController.run (package:test_api/src/backend/live_test_controller.dart:153:11)
#57     RemoteListener._runLiveTest.<anonymous closure> (package:test_api/src/remote_listener.dart:256:16)
#62     RemoteListener._runLiveTest (package:test_api/src/remote_listener.dart:255:5)
#63     RemoteListener._serializeTest.<anonymous closure> (package:test_api/src/remote_listener.dart:208:7)
#81     _GuaranteeSink.add (package:stream_channel/src/guarantee_channel.dart:125:12)
#82     new _MultiChannel.<anonymous closure> (package:stream_channel/src/multi_channel.dart:159:31)
#86     CastStreamSubscription._onData (dart:_internal/async_cast.dart:85:11)
#120    new _WebSocketImpl._fromSocket.<anonymous closure> (dart:_http/websocket_impl.dart:1145:21)
#128    _WebSocketProtocolTransformer._messageFrameEnd (dart:_http/websocket_impl.dart:338:23)
#129    _WebSocketProtocolTransformer.add (dart:_http/websocket_impl.dart:232:46)
#139    _Socket._onData (dart:io-patch/socket_patch.dart:2044:41)
#148    new _RawSocket.<anonymous closure> (dart:io-patch/socket_patch.dart:1580:33)
#149    _NativeSocket.issueReadEvent.issue (dart:io-patch/socket_patch.dart:1076:14)
(elided 111 frames from dart:async and package:stack_trace)

This was caught by the test expectation on the following line:
  file:///D:/disclaimer_screen_test.dart line 57
The test description was:
  someScreen Widget Test
════════════════════════════════════════════════════════════════════════════════════════════════════
Test failed. See exception logs above.
The test description was: someScreen Widget Test

✖ someScreen Widget Test
Exited (1)

理想情况下,我想完全限制或删除堆栈跟踪,以使它看起来像这样:

══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
The following TestFailure object was thrown running a test:
  Expected: <true>
  Actual: <false>

This was caught by the test expectation on the following line:
  file:///D:/disclaimer_screen_test.dart line 57
The test description was:
  someScreen Widget Test
════════════════════════════════════════════════════════════════════════════════════════════════════
Test failed. See exception logs above.
The test description was: someScreen Widget Test

✖ someScreen Widget Test
Exited (1)

这样,我就获得了所有相关信息,而没有所有我无法控制的东西,老实说,这些东西没有被破坏。我相信Framework和3rd Party套件可以按预期工作,如果不是,我正在进行其他调查。

我找到了defaultStackFilter方法,但这似乎是内部Flutter方法,而不是我可以控制的方法,也许我只是不了解它。

有没有办法在整个单元测试环境中整体更改堆栈输出或禁用它?

先感谢您!

兰达·施瓦兹(Randal Schwartz)

是的... pub中的stack_trace软件包具有以下功能:

您可以使用Trace.terse进一步清理堆栈跟踪。这会将来自Dart核心库的多个堆栈框架折叠在一起,因此仅可见从用户代码直接调用的核心库方法。

非常便利。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有办法让这个失败调用管道中断服务包的堆栈跟踪?

有没有办法操纵延迟堆栈?

有没有办法限制Firebase的Blaze计划?

有没有办法在chrome或firebox调试器的堆栈跟踪中隐藏第三方JS函数调用?

有没有办法限制/页面结果集

有没有办法跟踪API网关限制的调用?

有没有办法“限制” RoslynPad的Roslyn的IntelliSense?

有没有办法在Plotly(特别是R)中隐藏跟踪名称?

有没有办法限制.getId()

有没有办法限制Okta令牌授权?

有没有办法增加C#中的堆栈大小?

有没有办法限制导航堆栈在Flutter App中可以维护的页面数?

有没有办法从网站的检查菜单中获取有关元素的信息?

有没有办法捕获进程中的堆栈溢出?C ++ Linux

有没有办法限制总体CPU消耗?

有没有办法增加最近的文件限制?

有没有办法跟踪github克隆?

有没有办法获取yacc中堆栈中解析的令牌的当前数量

有没有办法问问EF中的上下文跟踪集有多大?

有没有办法增加Swift中double类型的数量限制?

有没有办法限制序列化程序中的 together 值?

有没有办法在堆栈跟踪中更改函数的路径?

有没有办法自动对模型应用限制?

在 RxJava(2) 中,有没有办法跟踪谁对主题调用了 onNext()?

有没有办法跟踪自 Flutter 中关闭对话消息以来的天数?

有没有办法启用跟踪以显示在 Kogito 中为 DMN 执行的决策序列?

有没有办法从多个光栅堆栈中写入单波段光栅

有没有办法限制 xsd 模式中的多个元素?

有没有办法删除 firebase 中创建的自定义跟踪/指标?