gpt4 book ai didi

java - TestNg 运行多个套件多次运行

转载 作者:行者123 更新时间:2023-12-02 12:16:39 25 4
gpt4 key购买 nike

我有一个高级 XML 文件:测试.xml

<suite name="allSuites">
<suite-files>
<suite-file path="tests.run1.xml" />
</suite-files>
</suite>

我的目的是使用 org.testng.xml.Parser 解析此 XML 文件,并向其中添加一些信息。

  Parser parser = new Parser(inputXml);
parser.setLoadClasses(false);
Collection<XmlSuite> suites = parser.parse();
XmlSuite parentSuite = suites.iterator().next();

然后,一旦结构具有所有必要的测试/类,将其传递回 TestNG:

  TestNG testng = new TestNG();
List<XmlSuite> suitesList = new ArrayList<XmlSuite>();
suitesList.add(parentSuite);
testng.setXmlSuites(suitesList);
testng.run();

我看到的问题是,tests.run1.xml 运行了两次(当我只希望它运行一次时),甚至没有让第一次运行完成:

[TestNG] Running:
tests.run1.xml
...
[TestNG] Running:
tests.run1.xml
...
[TestNG] Running:
testsng.xml

最佳答案

我不确定这是否应该被视为 TestNG 中的错误,或者是否应该被视为按设计工作

问题在于您显式调用解析逻辑来构造 List<XmlSuite>然后将其传递给 TestNG。但自从XmlSuite您创建的列表是通过 TestNG 解析器进行解析的,它将套件文件名的详细信息添加到其中。

现在,当您将此 XmlSuite 插入 TestNG 时,TestNG 在内部再次解析它,从而导致再次创建您的子测试套件。这解释了你的子套件运行了两次。

如果您只想丰富/修改套件文件的内容,那么这里有一种更简洁的方法。

  • 确保您使用的是 TestNG v6.11 或更高版本。
  • 构建一个实现 org.testng.IAlterSuiteListener 的 TestNG 监听器并在其alter()内方法,您迭代 List<XmlSuite>并添加您的丰富逻辑。
  • 您现在可以通过 <listeners> 注入(inject)此监听器标记(或)通过 @Listeners通过服务加载器进行注释(或)。更多可以引用here .

我已将其记录为 TestNG 中的错误。请参阅here有关错误详细信息。

可以引用我的回答here在 StackOverflow 上获取有关如何使用 IAlterSuiteListener 的示例

关于java - TestNg 运行多个套件多次运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46125558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com