我有一个测试套件正在我们创建的一堆网站上运行。大多数站点的工作方式相同,因此我可以在所有站点上运行所有测试,而不是使用大量重复的代码。
我现在有一些测试,我只想在几个网站上运行,如果网址是针对网站A,B或C,是否有办法只运行这些测试?
对于我在属性文件中读取的每个站点,该文件都包含测试中所需的url和其他信息,是否可以使用属性ignoreTests =后跟测试忽略,然后当我读取属性文件时@Before测试部分我可以设置每个@Test读入被忽略。
答案 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)。