如何进行Cucumber Android集成测试?
我正在尝试与 Android 项目和 Cucumber 建立持续集成。
这个想法是在 Cucumber 中编写测试,并通过 Cuke4Duke 和 NativeDriver for Android 在我的 Android 版本上运行测试。
当我运行这个程序时,我计划使用 Maven 和 Jenkins 服务器来自动执行测试,因此每次我提交到 Subversion 存储库时都会运行它。
这以前做过吗?有什么地方有好的指南吗?或者这样做是一个坏主意吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我们正在做的正是您计划使用 Maven、Jenkins 和 Git 做的事情。缺少的成分是 android/cucumber 集成。 com" rel="nofollow">lesspainful.com。
We're doing exactly what you're planning to do with Maven, Jenkins, and Git. The missing ingredient is the android/cucumber integration from lesspainful.com.
我不认为你的计划是一个坏主意。但据我所知,没有人使用该特定设置进行 Android CI。
您可能还想看看 Robotium,它类似于 Android 版的 Selenium,并提供非常丰富的 DSL,可以帮助您实现 cuke4duke 步骤。
I don't think that what you've planned is a bad idea. But I don't know of anyone that's doing Android CI with that particular setup.
You may also want to take a look at Robotium, it's like Selenium for Android and offers a very rich DSL that will help out with your cuke4duke step implementations.
在我的公司,我们使用了一些不同的设置(但可能您必须解决类似的挑战):Jenkins + Jenkins Android 插件 + Robotium + Ant。我们发现,当您尝试将 ant 用于比简单构建更复杂的事情时,它很难维护,并且我们正在将脚本重写为 gradle。
它工作得很好,但是您应该意识到两个潜在的问题:
1.模拟器很慢(即使在快速服务器上) - 您可以考虑将物理设备连接到您的服务器。
2.您可能必须为模拟器设置锁定(或仅使用一个执行程序),因为使用多个模拟器实例很困难/棘手。
In my company we use a little different setup (but probably you will have to solve similar challenges): Jenkins + Jenkins Android Plugin + Robotium + Ant. We find out that ant is hard to maintain when you try to use it to something more complicated then simple build and we are rewriting our scripts to gradle.
It works quite well, however you should be aware of two potential problems:
1. emulator is slow (even on fast server) - you can consider attaching physical device to your server.
2. you probably have to setup lock (or use only one executor) for emulator since using multiple emulator instance is hard/tricky.
我们所做的是在 Robotium 之上编写一个测试仪器引擎。该引擎主要是一个状态机,从文本文件中读取关键字并将其转换为 Robotium API 调用。我们最初确实注意到输入和输出是相同的:用户点击屏幕,显示新屏幕或显示新文本。
这使我们能够实现关键字测试驱动,但它在设备上运行,而不是远程运行。
只需 20% 的努力即可获得 80% 的好处:轻松编写/添加任何人都可读的新测试。当然有一些限制,但我们的目标已经达到了。
干杯
Ch
What we have done is write an test instrumentation engine above Robotium. This engine is mainly a state machine reading keywords from a text file and converting them into Robotium API calls. We did initially notice that inputs and outputs were the same: user taps on the screen, a new screen is displayed or new text is displayed.
That allows us to implement keyword test driven but it runs on the device so not remotely.
It is 20% of effort to get 80% of the benefit: easy to write/add new tests that are readable by anybody. Of course there are limitations but our goal was achieved.
Cheers
Ch