如何使用testng.xml从大型TestNG套件中执行一个测试?

30

我有一个包含许多方法的 TestNG 测试套件。我使用在 TestNG 运行器之上构建的包装器来执行此套件。除一个外,套件中的所有测试都失败了。在 testng.xml 文件中应该写什么以执行只有一个失败的测试用例?

显而易见的解决方案是给所有方法分配唯一的组名称,然后在 testng.xml 中指定名称。这在 2-3 个方法的情况下可以工作,但随着测试数量的增加,这种方式变得更加困难。

6个回答

35

你可以使用include代替exclude,这样就正好符合你的要求。只有这个测试将被执行。

  <classes>
    <class name="test.IndividualMethodsTest">
      <methods>
        <include name="testMethod" />
      </methods>
    </class>
  </classes>

8

试试这个:

  <classes>
    <class name="test.IndividualMethodsTest">
      <methods>
        <exclude name="testMethod" />
      </methods>
    </class>
  </classes>

2
或者使用<include name="testMethod"/>来执行其中一个测试方法。 - David Blevins

7
每次运行后,TestNG都会创建一个名为testng-failed.xml的文件,其中仅包含失败的测试。只需再次在该文件上调用TestNG即可:
java org.testng.TestNG testng.xml java org.testng.TestNG testng-failed.xml
(由于您似乎使用了自定义运行程序,请将org.testng.TestNG替换为您自己的运行程序)。

5
难以置信,Beust 本人回复了答案!! - Om Sao

1

您还可以创建自己的ITestListener(既然您已经有了自己的包装器),以跟踪失败,并从中生成仅包含失败测试的自定义故障套件文件。TestNG的监听器/拦截器钩子非常好用。在工作中,我们使用它们扩展了TestNG以多种方式:

  • 捕获/回放生成的数据集
  • 将结果记录到数据库中
  • 定制化测试输出(日志)
  • 使用@DataProvider提供的元数据(如ID、描述)为数据集添加注释
  • 运行时检查测试用例受环境限制的情况

1

有几种方法可以做到这一点。

您是否在使用Eclipse进行开发?有一个TestNG的Eclipse插件,我认为这将是您运行特定测试的最简单方法。该插件允许您运行可用测试的套件、组、类或方法。

如果没有,我相信您可以设置一个ant任务来启动测试(http://testng.org/doc/ant.html),并使用" classfilesetref "等属性来提供要运行的测试列表。您可以在单独的文件中指定测试,因此您不必每次运行测试时都更新build.xml。

安装testng插件只需按照以下步骤: 1-在Eclipse中转到"帮助"菜单。 2-选择"安装新软件"。 3-添加"http://beust.com/eclipse"。

我认为它适用于您指定的错误情况,您可能没有在Eclippse IDE中安装插件。


第一个选项不可用 - 我正在使用在TestNG运行器之上构建的包装器来启动测试。Eclipse无法捕获由我的包装器执行的测试结果。感谢第二个选项 - 我会尝试它。 - Sad Developer

0
在程序中选择测试方法,然后转到顶部菜单“运行”->“运行”,或按CTRL + F11,这将独立于XML测试套件启动测试。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接