6

我们正在使用 JUnit - Selenium 进行 Web 测试。我们使用 Maven 启动它们并构建一个可靠的报告。

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

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

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

对此的任何帮助都会非常感激

4

3 回答 3

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

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

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

于 2010-03-19T00:20:53.237 回答
2

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

于 2010-03-19T02:33:07.907 回答
0

如果您使用的是 Maven Surefire 插件,您可以运行以下命令:

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”是您的测试浏览器配置文件。

于 2016-03-21T02:03:39.007 回答