Flutter测试遇expect命名冲突错误,求解决方案
解决Flutter测试中expect命名冲突的问题
错误原因
你遇到的是命名冲突问题:flutter_test库和test_api库都导出了expect方法,编译器无法确定你要调用哪一个版本。
两种解决方法
方法1:隐藏其中一个库的expect
如果你的代码同时导入了这两个库,在导入时给其中一个加上hide expect即可。推荐隐藏test_api的expect,因为flutter_test的expect更适配Widget测试场景:
import 'package:flutter_test/flutter_test.dart'; import 'package:test_api/test_api.dart' hide expect;
方法2:使用as前缀区分库
给其中一个库添加前缀,调用时通过前缀明确指定方法来源:
import 'package:flutter_test/flutter_test.dart'; import 'package:test_api/test_api.dart' as testApi;
之后需要调用test_api的expect时用testApi.expect(),默认的expect()则会使用flutter_test的版本。
额外代码问题修正
你的测试代码里还有两处小问题:
expect(, matcher)是语法错误,缺少第一个参数,需要补充对应的Finder对象- 你定义的
MesajFind = find.text("msg")和传入的mesaj: 'Msg'大小写不匹配,会导致测试失败
修正后的完整测试代码示例:
import 'package:flutter_test/flutter_test.dart'; void main() { testWidgets("TEST WİDGET SUCCESS", (widgetTester) async { await widgetTester.pumpWidget(const MyHomePage(title: 'Ti', mesaj: 'Msg')); final titleFind = find.text("Ti"); final mesajFind = find.text("Msg"); // 修正大小写匹配问题 expect(titleFind, findsOneWidget); expect(mesajFind, findsOneWidget); // 修正语法错误 }); }
内容的提问来源于stack exchange,提问作者serkan
相关产品推荐
相关产品推荐

