【问题标题】:Java Selenium Junit Maven: Way to parametrize tests?Java Selenium Junit Maven:参数化测试的方法?
【发布时间】:2023-03-20 20:41:01
【问题描述】:

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

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

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

【问题讨论】:

    标签: java maven junit selenium-webdriver


    【解决方案1】:

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

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

    一般来说 TestNG hase greate documentation 我推荐你阅读。

    如果您无法切换到 TestNG,请查看 this 教程,了解 Junit 中的测试参数化。 Here 是关于 Junit 测试分组的。

    【讨论】:

      【解决方案2】:

      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");
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2019-01-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-19
          相关资源
          最近更新 更多