请教个单元测试的问题

207 天前
 magic3584

最近在学 flutter 的单元测试,目前在跟着官方文档 https://codelabs.developers.google.com/codelabs/flutter-app-testing

但是今天有个问题,就是在 favorites_test 的时候,如果我把下面文件的 第 24 行 for 循环里的 i+=2 变成 i++, 就会测试失败

官方的项目在 https://github.com/flutter/codelabs/blob/main/testing_codelab/step_07/test/favorites_test.dart

不清楚什么原因,找到 flutter dev 的官方 discord 询问也没得到解答。

1228 次点击
所在节点    Flutter
6 条回复
Hurriance
206 天前
这两个算术结果本身就不一样吧
maichael
206 天前
i++和 i+=2 也不等价呀
lovedebug
206 天前
i++ 是 i+=1
magic3584
206 天前
@Hurriance #1
@maichael #2
@lovedebug #3
我知道 +1 的+2 的区别。请看 append,如果个数多就会失败,不清楚为什么
maichael
206 天前
@magic3584
find.byIcon 默认不会寻找 Offstage 的 node, 修改 physicalSize 某种程度上来说是比较 hack 的方法,毕竟说不准多大的 physicalSize 是合适的。

更恰当的方式是不跳过 Offstage 的寻找:
var totalItems = tester.widgetList(find.byIcon(Icons.close, skipOffstage: false)).length;

具体的你可以参考这两个:
https://api.flutter.dev/flutter/flutter_test/CommonFinders/byIcon.html
https://api.flutter.dev/flutter/widgets/Offstage-class.html
magic3584
205 天前
@maichael #5
感谢大佬,主要是不明白模拟器一屏可以显示 10 个但是 testWidget 的时候就不行。
打印出来了也不知道单位是 dp 还是 px 。
幸亏我是自己敲的,然后粗心敲成 i++了,否则真就错过这一个知识点了。
后面跑 integration_test 也失败了,我再看看😭

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1026879

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX