Java Selenium Junit Maven:参数化测试的方法?

时间:2013-09-24 07:11:07

标签: java maven junit selenium-webdriver

我有一个测试套件正在我们创建的一堆网站上运行。大多数站点的工作方式相同,因此我可以在所有站点上运行所有测试,而不是使用大量重复的代码。

我现在有一些测试,我只想在几个网站上运行,如果网址是针对网站A,B或C,是否有办法只运行这些测试?

对于我在属性文件中读取的每个站点,该文件都包含测试中所需的url和其他信息,是否可以使用属性ignoreTests =后跟测试忽略,然后当我读取属性文件时@Before测试部分我可以设置每个@Test读入被忽略。

3 个答案:

答案 0 :(得分:0)

您在这里询问的所有内容都可以通过TestNG而不是Junit获得。

this好的教程中描述了测试用例的参数化。 至于选择性运行测试用例,我认为分组是有用的,here是教程。

一般来说,TestNG需要大家documentation,我建议你阅读。

如果您无法与TestNG交流,请查看this教程,以便在Junit中进行测试参数化。 Here是关于Junit测试分组的。

答案 1 :(得分:0)

Junit使用Assume动态忽略测试。

使用@Before方法将URL写入字段。您可以使用Assume基于URL加入测试。如果URL不是“firstValidUrl”或“secondValidUrl”,则忽略以下测试。

org.junit.Assume.assumeTrue(url.equals("firstValidUrl") || url.equals("secondValidUrl"));

您可以使用Hamcrest获得更好的声明:

org.junit.Assume.assumeTrue(url, org.hamcrest.Matchers.isIn("firstValidUrl", "secondValidUrl"));

使用静态导入和Hamcrest:

assumeTrue(url, isIn("firstValidUrl", "secondValidUrl");

答案 2 :(得分:0)

是的,您可以使用JUnit进行参数化,但需要确保使用的是JUNit 4.11或更高版本。 JUNit之前没有参数化。 JUnit的数据提供者和注释几乎与TestNG完全一样,使用二维对象数组(List)。