Testing 编写TestNG测试的最佳方法,其中一个测试依赖于另一个测试的输出

Testing 编写TestNG测试的最佳方法,其中一个测试依赖于另一个测试的输出,testing,testng,Testing,Testng,我有一个TestA,它执行对多个Web服务(由@DataProvider提供)的调用,并验证每个Web服务的状态 TestB然后验证成功运行TestA生成的输出的进一步属性 为了使用TestNG运行这些测试,我尝试了两种方法: 使用@Factory生成从TestA输出创建的测试类,但工厂似乎是在运行任何测试之前创建的,例如TestA 要将TestA的输出存储在输出集合中,请让TestA以高于TestB的优先级运行,然后让TestB使用从输出集合检索其结果的数据提供程序。这与类似,只是它使用优先级

我有一个TestA,它执行对多个Web服务(由@DataProvider提供)的调用,并验证每个Web服务的状态

TestB然后验证成功运行TestA生成的输出的进一步属性

为了使用TestNG运行这些测试,我尝试了两种方法:

  • 使用@Factory生成从TestA输出创建的测试类,但工厂似乎是在运行任何测试之前创建的,例如TestA
  • 要将TestA的输出存储在输出集合中,请让TestA以高于TestB的优先级运行,然后让TestB使用从输出集合检索其结果的数据提供程序。这与类似,只是它使用优先级而不是DependsOn,如果任何TestA运行失败,它将跳过TestB
  • 问题

    在上述1的情况下,是否可以根据测试的输出动态生成和运行新的测试类(就像工厂所做的那样)

    如果不是,上面的case2是推荐的测试方法,还是有更好的方法

    更新:
    正如Cedric所建议的那样,我也提出了这个问题,测试应该彼此独立,并有自己的固定装置,以便易于维护、自包含和推理。
    如果您的场景包括两个web服务调用(流测试),当第一次调用的响应作为第二次调用的输入时,请确保在
    setUp()
    方法中执行第一次调用,以便第二次调用的夹具是显式的

    您所问的并不像前面所说的那样是不可能的:TestNG需要在初始化时知道所有的测试类,这样它就可以正确地计算排序,即使您使用工厂创建这些类也是如此

    但是,有许多方法可以通过不运行不应该依赖于第一个测试的输出的测试来实现您想要的

    例如,testA可以生成一个空集合,这样testB就不会收到要运行的数据


    如果您需要更多帮助,请发布一些特定代码(并随时向testng用户发送电子邮件以继续讨论)。

    他正在测试web服务,这些显然不是单元测试,在这种情况下,依赖项不仅有用,它们有时是编写体面测试的唯一方法。@Cedricbe我必须说使用单元测试框架编写的集成测试……我会纠正的,谢谢Cedric!我将创建一个可运行的示例,并在有机会时发布到TestNG用户组。