Cucumber-JVM Toy with Selenium

A toy project with full practice refreshment about Cucumber-JVM, Maven, Selenium and Page Factory Pattern implemented PageObject.

元旦后利用晚上时间启动一个练手项目,包含从Java Page Factory Pattern on Selenium 到Cucumber+JUnit的基于Maven构建.在做两年Python的自动化测试和开发后看看Java需要重新熟悉速度如何,加上Cucumber这种BDD的新概念能否很快落实理解到可以独立Debug的程度.在此期间遇到的一些有趣Tips也会记录下来.

Github Link

Github Project Page

In addition, this toy project also introduced Travis as CI plugin, codecov as coverage plugin, circle-ci (in progress).

Github友好的CI工具包括Travis-CI和codecov也部署在项目上.目前circleci还有一些问题.

[Updated Jan 11]: 当执行到某个Scenario或Scenario Outline的实例时,该Scenario会在每个Class上都运行一次.而很多教程或书籍上都在@Before时创建测试环境/对象,在@After时候注销环境/对象(例如quit Selenium Web Driver).根据这些网上流行的例子来学习的同行显然会遇到两个问题:

- 测试环境多次创建,增加了无意义的运行损耗;
- 冗余代码来检测各种注销条件,bad smell of Race Condition.

[Updated Jan 13]: Work around is available now.

  • 采用PageObject支持Cucumber-JVM测试,其PageObject的调用不必要放到@Before内,而是可以置于@Given条件内. @Before内放置的内容会被不需要测试当前Scenario的Class调用(因为Cucumber会在每次Scenario launch时运行每一个Test Class的@Before.也就是调用Object Factory去Reflect出每个class instance再按照顺序Loop all hooks for each scenario.run() as a test suite concept).

  • 选择Latest webdriver和Selenium-3.0.1, Chrome的版本需要升级>=v52.

这里先把札记MD放到Gitbook share出来. Gitbook Link

[以上] [EOF]