Android 上移除 FlutterMain.setIsRunningInRobolectricTest
摘要
#如果您针对 Flutter 引擎的 Java 嵌入编写 Java JUnit 测试(例如 Robolectric 测试)并使用了 FlutterMain.setIsRunningInRobolectricTest(true)
API,请将其替换为以下内容
FlutterJNI mockFlutterJNI = mock(FlutterJNI.class);
FlutterInjector.setInstance(
new FlutterInjector.Builder()
.setFlutterLoader(new FlutterLoader(mockFlutterJNI))
.build());
这种情况应该非常罕见。
上下文
#FlutterMain
类本身已弃用,并被 FlutterInjector
类取代。FlutterMain
类使用许多静态变量和函数,这使得测试变得困难。FlutterMain.setIsRunningInRobolectricTest()
是一种临时静态机制,允许测试在 JVM 上的主机机器上运行,而无需加载 libflutter.so
本地库(这无法在主机机器上完成)。
Flutter 的 Android/Java 引擎嵌入中所有测试所需的依赖项注入现已迁移到 FlutterInjector
类,而不是使用一次性解决方案。
在 FlutterInjector
类中,setFlutterLoader()
构建器函数允许控制 FlutterLoader
类如何定位和加载 libflutter.so
库。
更改说明
#此 引擎提交 移除 FlutterMain.setIsRunningInRobolectricTest()
测试函数;以下 提交 添加了 FlutterInjector
类以协助测试。PR 20473 进一步重构了 FlutterLoader
和 FlutterJNI
以允许进行其他模拟和测试。
以允许进行其他模拟/测试。
迁移指南
#迁移前代码
FlutterMain.setIsRunningInRobolectricTest(true);
迁移后代码
FlutterJNI mockFlutterJNI = mock(FlutterJNI.class);
FlutterInjector.setInstance(
new FlutterInjector.Builder()
.setFlutterLoader(new FlutterLoader(mockFlutterJNI))
.build());
时间线
#包含于版本:1.22.0-2.0.pre.133
稳定版发布:2.0.0
除非另有说明,否则本网站上的文档反映了 Flutter 的最新稳定版本。页面上次更新于 2024-04-04。 查看源代码 或 报告问题.