0

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

我现在有几个测试,我只想在几个站点上运行,有没有办法只在 url 用于站点 A、B 或 C 时运行这些测试?

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

4

3 回答 3

0

您在这里所要求的一切都可以通过 TestNG 而不是 Junit 获得。

这个很好的教程描述了测试用例的参数化。至于测试用例的选择性运行,我认为分组会很有用,这里是教程。

一般来说,我建议您阅读TestNG的文档。

如果您无法切换到 TestNG,请查看教程以在 Junit 中进行测试参数化。 是关于Junit测试分组的SO。

于 2013-09-24T07:44:11.067 回答
0

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

于 2014-01-15T03:21:20.997 回答
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");
于 2013-09-24T13:42:19.023 回答