如果我理解正确,默认情况下 flutter test
将在 Dart VM 上使用 JIT 运行,而 Release模式使用 AOT 编译器生成本地代码。
我(认为)有一个只发生在 AOT 模式(发布和配置文件)的崩溃,当我可以通过在 AOT/配置文件模式下运行代码来隔离它时,调试和重现它会更容易。
那么如何在 AOT 模式下运行测试(或至少运行代码片段)? (我真的不在乎它是在实际的 iOS 或 Android 设备上运行,还是在开发机器或模拟器上执行。
(我已经找到了 an article which seems to describe the compilation process ,但是涉及到很多。有没有更简单的测试方法?)
最佳答案
我找到了一个相当简单的解决方案,即 documented on the dart website .从 Dart 2.3 开始,SDK 捆绑了 dart2aot
和 dartaotruntime
。这允许简单的执行,并且我能够重现我的崩溃。
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$
关于unit-testing - 在 AOT/release 或配置文件模式下运行 flutter/dart 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57215822/