我有一个flutter插件,它使用平台通道来做一些本机工作。
如何正确地为需要此插件的应用程序编写测试?
单元测试只适用于纯dart函数。我不相信Widget测试能够测试使用平台通道到本机的东西。所以剩下的就是集成测试了。
据我所知,集成测试将启动你的主应用程序,你可以在你的应用程序周围控制它并进行测试。
对于我的例子,我只想测试使用插件的代码(它使用平台通道来获取本机内容)。
同样重要的是从平台通道返回的值,因此使用真正的平台通道而不是模拟通道调用本机端是很重要的。
这有可能吗?我可以告诉集成测试人员打开我的应用程序的虚拟版本吗,有点像集成的小部件测试程序?
发布于 2018-10-01 09:48:39
似乎对你的问题的简短回答是否定的。颤振驱动程序(集成测试)只能与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
https://stackoverflow.com/questions/52028969
复制相似问题