我有一个在我们创建的一堆网站上运行的测试套件。大多数站点的工作方式相同,因此我可以在所有站点上运行所有测试,而不是使用大量重复代码。
我现在有几个测试,我只想在几个站点上运行,有没有办法只在 url 用于站点 A、B 或 C 时运行这些测试?
对于我在属性文件中读取的每个站点,其中包含测试中所需的 url 和其他信息,是否可以有一个属性 ignoreTests= 后跟要忽略的测试,然后当我读取 @Before 部分中的属性文件时我可以将每个 @Test 读入的测试设置为被忽略。
我有一个在我们创建的一堆网站上运行的测试套件。大多数站点的工作方式相同,因此我可以在所有站点上运行所有测试,而不是使用大量重复代码。
我现在有几个测试,我只想在几个站点上运行,有没有办法只在 url 用于站点 A、B 或 C 时运行这些测试?
对于我在属性文件中读取的每个站点,其中包含测试中所需的 url 和其他信息,是否可以有一个属性 ignoreTests= 后跟要忽略的测试,然后当我读取 @Before 部分中的属性文件时我可以将每个 @Test 读入的测试设置为被忽略。
是的,您可以使用 JUnit 进行参数化,但您需要确保您使用的是 JUNit 4.11 或更高版本。JUNit 在此之前没有参数化。JUnit 具有几乎与 TestNG 完全相同的数据提供者和注释,使用二维对象数组(列表)。
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");