我想创建一个类似的测试库或框架。它的主要目的是在Android设备上运行UI测试。例如,这是我希望它看起来的样子
(test-flow
(launch-app "some.app.id")
(assert-visible "Login")
(type-text "admin")
(tap-on "unlockButton")
(assert-visible "HomeScreen"))
我希望这个API看起来既美观又清晰。基本上它是做这些事的:
- 使用ID为"some.app.id"启动应用程序
- 检查名为"Login"的登录字段是否可见在屏幕上
- 在登录字段中输入文本"admin"
- 点击解锁按钮
- 检查文本"HomeScreen"是否可见,这意味着我们成功登录。
我已经创建了上面所有的期望函数,那是个简单的部分。我为它们设计返回可以包含:result
或:error
的hash-map。但我卡在如何将这些函数组合起来以工作作为一个测试框架,如果我把它们放在某个函数内,那么如果某些步骤失败,执行将继续到下一个步骤,并且失败的步骤的结果将会丢失。之后,我决定编写宏,把所有函数转换成列表,逐个评估它们并返回每个步骤的详细结果。但我失败了(即便是在ChatGPT的帮助下),也许因为我Clojure新手。
在可能的一周内无法解决这个问题后,我认为可能我做错了什么。也许有人能帮我解决这个API问题?
这是我对这个API的看法
- 测试结果应包括所有执行步骤(函数)的结果
- 如果某个步骤失败,则执行应停止,并返回所有执行步骤的结果。
我受这个框架的启发,我只是觉得用它配合REPL写测试会更容易,然后在测试里做些Clojure魔术:
谢谢!