Maven - Selenium - 只能运行一次测试

时间:2010-03-18 08:18:07

标签: junit selenium maven surefire

我们正在使用JUnit - Selenium进行网络测试。我们使用Maven启动它们并构建一个万无一失的报告。

测试套件非常大,需要一段时间才能运行,有时单个测试失败,因为浏览器无法启动。我希望能够使用maven运行SINGLE测试,因此我重新测试失败的测试并更新报告。

我可以使用mvn test -Dtest=TESTCLASSNAME在一个测试类中运行所有测试,但这不够好,因为在我们最复杂的测试类中运行所有测试大约需要10分钟,而且很可能是其他测试将失败(因为浏览器无法启动),这会弄乱我的报告。

我知道我可以从Eclipse运行一个测试,但这不是我想要的。

任何有关这方面的帮助都非常适合

3 个答案:

答案 0 :(得分:4)

  1. 您可以为每个测试用例创建一个具有通用设置和子类的父类,这样您就可以使用mvn test -Dtest = TESTCLASSNAME来运行单个测试。

  2. 如果您使用的是junit4,则可以使用@Ignore注释您想要忽略的方法。

  3. 如果您没有需要为每个测试用例运行的onSetup()和onTeardown(),那么您可以将测试方法设为私有,并且只有一个调用其他测试用例的测试用例。这样就很容易根据需要对它们进行评论。

答案 1 :(得分:2)

c_maker的答案描述了要点 - 你真的应该考虑将大型测试用例分解为多个。我推荐使用TestNG或JUnit4进行Selenium测试,以便您可以在整个套件,任何测试依赖项等之前轻松管理设置。在TestNG中,您还可以使用group对测试进行分类以有选择地运行,这样您就不需要在要运行特定类测试时将它们设置为忽略。

答案 2 :(得分:0)

如果您使用的是Maven Surefire Plugin,则可以运行:

mvn -Dtest=TestCircle#mytest test

其中TestCircle是测试类,mytest是测试方法名称。

不直接相关,但如果您使用Cucumber运行方案,则可以通过执行以下操作在单个功能文件中运行单个方案:

mvn -P selenium,chrome -Dcucumber.options="classpath:com/my/package/myfeature.feature:47" clean verify

其中第47行是您希望运行的方案的开始,并且" chrome"是您的测试浏览器配置文件。