首页 > 解决方案 > 在 AOT/release 或 profile 模式下运行颤振/飞镖测试?

问题描述

如果我理解正确,默认情况下flutter test将在 Dart VM 上使用 JIT 运行,而发布模式使用 AOT 编译器编译本机代码。我(想)有一个崩溃,它只发生在 AOT 模式(发布和配置文件),当我可以通过在 AOT/配置文件模式下运行代码来隔离它时,调试和重现它会更容易。

那么如何在 AOT 模式下运行测试(或至少是代码片段)?(我真的不在乎它是在实际的 iOS 或 Android 设备上运行,还是在开发机器或模拟器上执行。

(我发现一篇似乎描述了编译过程的文章,但涉及的内容相当多。有没有更简单的测试方法?)

标签: unit-testingtestingflutterdart

解决方案


我找到了一个相当简单的解决方案,该解决方案记录在 dart 网站上。从 Dart 2.3 开始,SDK 捆绑了一个dart2aotdartaotruntime捆绑在一起。这允许简单的执行,我能够重现我的崩溃。

Herbys-MacBook-Pro-2017:migrate$ dart2aot migrate_aot_test.dart migrate_aot_test.dart.aot
Herbys-MacBook-Pro-2017:migrate$ dartaotruntime migrate_aot_test.dart.aot
[...]

===== CRASH =====
si_signo=Segmentation fault: 11(11), si_code=1, si_addr=0x1061000410f
Abort trap: 6
Herbys-MacBook-Pro-2017:migrate$

推荐阅读