Maven - Selenium - 可以只运行一项测试
我们使用 JUnit - Selenium 进行 Web 测试。我们使用 Maven 来启动它们并构建一个万无一失的报告。
测试套件非常大,需要一段时间才能运行,有时单个测试会失败,因为浏览器无法启动。我希望能够使用 Maven 运行单个测试,因此我重新测试失败的测试并更新报告。
我可以使用 mvn test -Dtest=TESTCLASSNAME 来运行一个测试类中的所有测试,但这还不够好,因为运行我们最复杂的测试类中的所有测试大约需要 10 分钟,并且其他一些测试很可能会失败(因为浏览器无法启动),这会弄乱我的报告。
我知道我可以从 Eclipse 运行一项测试,但这不是我想要的。
对此的任何帮助将非常感激
We are using JUnit - Selenium for our web tests. We use Maven to start them and build a surefire report.
The test suite is pretty large and takes a while to run and sometimes single tests fail because the browser won't start. I want to be able run a SINGLE test using maven so I retest the tests that fail and update the report.
I can use mvn test -Dtest=TESTCLASSNAME
to run all the tests in one test class, but this is not good enough since it takes about 10 minutes to run all the tests in our most complicated test classes and it's very likely that some other test will fail (because the browser wont start) and this will mess up my report.
I know I can run one test from Eclipse but that is not what I am looking for.
Any help on this would be very appriciated
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以为每个测试用例拥有一个具有通用设置的父类和一个子类,这样您就可以使用 mvn test -Dtest=TESTCLASSNAME 来运行单个测试。
如果您使用的是junit4,您可以使用@Ignore注释您暂时希望忽略的方法。
如果您没有需要为每个测试用例运行的 onSetup() 和 onTeardown(),那么您可以将测试方法设为私有,并且只有一个测试用例调用其他测试用例。这样就可以很容易地根据需要注释掉它们。
You can have a parent class with common setup and a child class for each testcase, that way you can use mvn test -Dtest=TESTCLASSNAME to run a single test.
If you are using junit4, you can annotate the methods you wish to ignore for the moment with @Ignore.
If you do not have onSetup() and onTeardown() that needs to run for each testcase then you can make your test methods private and have only one testcase that call the others. This way it is easy to comment them out as needed.
c_maker 的答案描述了要点 - 您确实应该考虑将大型测试用例分解为多个测试用例。我建议使用 TestNG 或 JUnit4 进行 Selenium 测试,以便您可以轻松管理整个套件之前的设置、任何测试依赖项等。在 TestNG 中,您还可以使用
group
对测试进行分类以有选择地运行,这样当您想要运行特定类别的测试时,无需将它们设置为忽略。c_maker's answer describes the main points - you really should consider breaking up the large test cases into multiple ones. I recommend TestNG or JUnit4 for Selenium tests so that you can easily manage the set up before the whole suite, any test dependencies, and so on. In TestNG, you can also use a
group
to classify tests to run selectively so that you don't need to set them to ignore when you want to run a particular class of tests.如果您使用 Maven Surefire 插件,你可以运行这个:
其中 TestCircle 是测试类, mytest 是测试方法名称。
不直接相关,但如果您使用 Cucumber 运行场景,则可以通过执行以下操作在单个功能文件中运行单个场景:
其中第 47 行是您希望运行的场景的开头,“chrome”是您的测试浏览器配置文件。
If you are using the Maven Surefire Plugin, you may run this:
where TestCircle is the test class, and mytest is the test method name.
Not directly related, but if you are using Cucumber to run scenarios, you may run a single scenario in a single feature file by doing this:
where line 47 is the start of the scenario you wish to run, and "chrome" is your test browser profile.