如何在正常生命周期之外使用Maven运行Selenium RC junit测试?

时间:2011-08-08 16:13:27

标签: maven selenium junit selenium-webdriver

我有一个Maven项目,它是一组使用JUnit运行的Selenium 2测试。换句话说,整个项目中唯一的东西是JUnit测试用例,它们都存在于普通的源目录中,即src / main / java,因为它们是项目中的主要源文件。

我希望能够使用Maven运行这些相同的测试,但由于这些测试不是项目中的实际单元测试或集成测试(他们没有测试自己,他们正在其他地方测试Web应用程序),我不喜欢不希望它们在正常的构建生命周期中运行。但是,我仍然希望能够在POM文件中定义测试阶段/目标。

此时我有点了解surefire插件的工作方式,我只是不知道如何从构建中解除执行。我希望所有新的执行都是独立的,这样我就可以通过执行以下操作来运行它们:mvn run-webtests并且run-webtests阶段与我的项目的编译和包目标完全不同。

所以我想我有两个总体问题:

1。)我是在正确的轨道上还是有更好的方法来思考这个问题?

2。)接下来我需要做些什么来完成这项工作?创建自定义阶段?创建自定义目标?

很抱歉提出这样一个看似基本的问题,但我无法找到任何人做这样的事情的例子。

1 个答案:

答案 0 :(得分:2)

我认为你走在正确的轨道上。不幸的是,Maven在某些领域缺乏灵活性。通常可以使东西适合,但有时它可能是一个真正的痛苦。我认为使这项工作最简单的方法是为您的硒测试使用不同的命名约定,并确保这些是excluded from您的“正常”测试运行。然后define a profile您将surefire插件配置为include硒测试并排除其他测试。然后运行硒测试,你可以

mvn test -P selenium-tests

您可以设置它以便运行mvn run-webtests的唯一方法是

  1. 定义custom lifecycle,其中“run-webtests”是生命周期中的一个阶段,或者
  2. Write a plugin,虽然执行插件时总是有一个':',所以它更像mvn myplugin:run-webtests
  3. 与pom中的简单配置文件相比,这些工作更难以维护,更难维护。