You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter JS Android单元测试报错求助:无法加载quickjs动态库

Flutter JS单元测试适配方案(含Android示例)

错误原因解析

你遇到的Failed to load dynamic library 'quickjs_c_bridge.dll'错误,本质是纯Dart单元测试无法加载flutter_js依赖的原生动态库。纯Dart测试运行在本地Dart VM中,不会自动打包或加载Flutter插件的原生组件(比如Windows的dll、Android的so库),导致初始化JS运行时失败。

核心测试技巧

1. 改用Flutter集成测试

所有涉及flutter_js的测试必须放在集成测试中,因为集成测试运行在真实设备/模拟器上,能完整加载Flutter的原生通道和插件依赖,解决原生库加载问题。

2. 配置Android测试环境

无需手动复制so库,flutter_js的gradle脚本会自动将原生库打包到测试APK中,只需确保项目依赖配置正确。


Android适配示例

步骤1:添加集成测试依赖

在pubspec.yaml的dev_dependencies中添加:

dev_dependencies:
  flutter_test:
    sdk: flutter
  integration_test:
    sdk: flutter

步骤2:编写集成测试代码

在项目根目录创建test/integration_test/js_runtime_test.dart,代码如下:

import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
import 'package:flutter_js/flutter_js.dart';

void main() {
  // 初始化集成测试绑定
  IntegrationTestWidgetsFlutterBinding.ensureInitialized();

  testWidgets('基础JS计算测试', (WidgetTester tester) async {
    // 初始化JS运行时
    final jsRuntime = getJavascriptRuntime();

    // 执行简单加法
    final result = jsRuntime.evaluate('10 + 20');
    expect(result.stringResult, '30');

    // 释放运行时资源,避免内存泄漏
    jsRuntime.dispose();
  });

  testWidgets('自定义JS函数测试', (WidgetTester tester) async {
    final jsRuntime = getJavascriptRuntime();

    // 定义并执行JS函数
    final jsCode = '''
      function getUserInfo() {
        return {
          name: 'TestUser',
          age: 28
        };
      }
      JSON.stringify(getUserInfo());
    ''';
    final result = jsRuntime.evaluate(jsCode);
    expect(result.stringResult, '{"name":"TestUser","age":28}');

    jsRuntime.dispose();
  });
}

步骤3:运行测试

确保Android模拟器已启动或真实设备已连接,执行命令:

flutter test integration_test/js_runtime_test.dart -d android

额外注意事项

  • 强制释放资源:每个测试用例结束后必须调用jsRuntime.dispose(),否则会导致设备内存泄漏,影响后续测试。
  • 异步JS处理:如果需要测试Promise等异步JS逻辑,可以通过jsRuntime.onMessage监听JS侧的回调,或者使用flutter_js提供的异步评估方法(如evaluateAsync)。
  • 跨平台兼容:集成测试同样支持Windows/Linux平台,只需更换设备参数(如-d windows)即可,无需修改测试代码。

内容的提问来源于stack exchange,提问作者Jimmy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 04:55:31