当前位置: 首页 > 知识库问答 >
问题:

TestNG运行的类不正常(跳过测试的类之间)

宁锐
2023-03-14

我在TestNG Selenium Webdriver 2.0和Java方面遇到了一个问题。我设置了断点,看到了最奇怪的行为。
我有几个包含测试组的类文件。每个类都从初始化类中所有测试的全局变量开始,包括对初始化WebDriver的另一个类的调用。接下来是一个@BeforeClass,接下来是我的@Test测试。我正在从一个testng.xml文件运行这些类。

在最近调试一个问题时,我发现在运行时,testNG执行以下操作:

  1. 初始化Class1中的全局变量和webdriver
  2. 然后跳转到class2的顶部并执行相同操作
  3. 然后跳回到class1@BeforeClass
  4. 然后运行class1和class5中的测试,然后跳回到class2

@BeforeClass并从那里结束...

testNG为什么会这样。我已经尝试过逐步完成,但是testNG是编译过的代码,所以我不明白为什么它没有在上面的步骤2之前完成class1。在class1中的webdriver之后初始化class2中的webdriver会产生一个奇怪的问题,即如果不关闭class2的驱动程序,我就无法在class1的末尾执行driver.close()。而且由于class2已经初始化了它的全局变量和webdriver,所以当testNG在class1测试完成后最终移回class2时,它的webdriver初始化将被忽略。同样,在运行时,我可以看到一个webbrowser打开到一个路径(对于class1),然后转到另一个路径(对于class2)。只是不对。有什么想法为什么testNG是以这样的顺序运行的吗?

共有1个答案

贺博厚
2023-03-14

结果表明,导致testNG在类之间跳过的问题是,我在类级别初始化变量、类等,而不是在方法(@test)中初始化。您可以声明NULL对象,但不能将它们初始化为任何值,除非在方法中。这包括WebDriver!所以基本上是一个setup方法,第一个在类中运行的方法,对于任何需要在类中作用域的变量都是需要的。希望这能帮助某人节省一些时间。谢谢-小瑞。

 类似资料:
  • 我有maven测试项目如下: pom.xml testng.xml 跟踪测试。JAVA 当我尝试运行“mvn test”命令时,它运行得很好,但当我尝试使用maven命令运行特定的测试类(如“mvn test-Dtest=TrackerTest”)时,它会引发如下异常: 看起来使用maven命令运行特定的测试类并没有尝试从testng获取参数。xml,我也尝试过类似“mvn test-Dtest=

  • 我有一个TestNG@Factory类,一个创建驱动程序的基类和两个包含多个@test方法的测试类来运行测试。考虑到我下面的@Factory类。 和是两个测试类。它们扩展基类并调用基类构造函数来创建驱动程序。特定设备ID在特定时间只能使用驱动程序的一个实例。 我面临的问题是IndTest和IndTest2同时运行,测试试图同时在特定设备上运行不同的测试。我要求先调用IndTest类,在设备1和设备

  • 我有一个测试类的testng套件,我正在通过一个testng.xml文件运行它。这个很管用。所有测试都是串行运行的,因此没有并行执行障碍。 当然,通过类成员变量在单个类中的测试方法之间共享状态是很容易的,但是我不知道如何在测试类之间共享状态。

  • 我正在尝试使用TestNg并行运行测试。我有3个类(两个扩展了BaseTest类的测试类) BaseTest类只有“设置”和“拆卸”,没有其他东西。 当我尝试像这样并行运行测试时,一个带有测试的类运行,而另一个类只打开一个浏览器(但不执行测试) 但是当我从BaseTest类中剪切代码并将其直接放到我的每个测试类中(因此不扩展BaseTClass)时,代码工作,测试并行运行 为什么?我根本没有做任何