首页 文章

测试使用插件和平台通道的Flutter代码

提问于
浏览
5

我有一个flutter插件,它使用平台通道做一些本地工作 .

如何为需要此插件的应用程序正确编写测试?

单位测试仅适用于纯飞镖功能 . 我不相信Widget测试能够测试使用平台通道到本机的东西 . 因此,离开集成测试 .

据我所知,集成测试将启动您的主应用程序,您可以围绕您的应用程序控制它并测试 .

对于我的情况,我想测试使用插件的代码(使用平台通道进行原生内容) .

同样重要的是从平台通道返回的值,因此使用真实平台通道而不是模拟通道调用本机端是很重要的 .

那可能吗?我可以告诉集成测试人员打开我的应用程序的虚拟版本,有点像集成的小部件测试程序吗?

1 回答

  • 3

    似乎你的问题的简短答案是否定的 . Flutter驱动程序(集成测试)只能与UI,AFAIK进行交互 . 它无法拦截对插件的调用 . 它用于从UI测试整个应用程序 .

    但是,可以在单元和小部件测试中拦截对插件的调用 . 这允许监视对插件的调用并模拟响应 . 这样您就可以测试插件的dart代码和/或使用该插件的小部件 . 测试本机代码将涉及编写本机测试 .

    以下是拦截对插件进行测试的调用的示例:

    MethodChannel('audio_recorder')
        .setMockMethodCallHandler((MethodCall methodCall) async {
      log.add(methodCall);
      switch (methodCall.method) {
        case 'start':
          isRecording = true;
          return null;
        case 'stop':
          isRecording = false;
          return {
            'duration': duration,
            'path': path,
            'audioOutputFormat': extension,
          };
        case 'isRecording':
          return isRecording;
        case 'hasPermissions':
          return true;
        default:
          return null;
      }
    });
    

    有关完整示例,请参阅here

相关问题