Jam*_*mes 11 dart flutter flutter-test
我有一个flutter插件,它使用平台通道做一些本地工作.
如何为需要此插件的应用程序正确编写测试?
单位测试仅适用于纯飞镖功能.我不相信Widget测试能够测试使用平台通道到本机的东西.因此,离开集成测试.
据我所知,集成测试将启动您的主应用程序,您可以围绕您的应用程序控制它并测试.
对于我的情况,我想测试使用插件的代码(使用平台通道进行原生内容).
同样重要的是从平台通道返回的值,因此使用真实平台通道而不是模拟通道调用本机端是很重要的.
那可能吗?我可以告诉集成测试人员打开我的应用程序的虚拟版本,有点像集成的小部件测试人员吗?
您问题的简短答案似乎是“否”。Flutter驱动程序(集成测试)只能与UI AFAIK交互。它无法拦截对插件的调用。它用于从用户界面测试整个应用。
但是,可以在单元测试和小部件测试中拦截对插件的调用。这样可以监视对插件的调用并模拟响应。这样,您可以测试插件的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;
}
});
Run Code Online (Sandbox Code Playgroud)
有关完整的示例,请参见此处
| 归档时间: |
|
| 查看次数: |
934 次 |
| 最近记录: |