繁体   English   中英

TestNG的课程运行混乱(在测试类别之间跳过)

[英]TestNG is Running Classes Out of Order (Skipping Between Classes of Tests)

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

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

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

@BeforeClass并从那里结束...

为什么testNG会这样表现。 我已经尝试了逐步操作,但是testNG是编译后的代码,因此我无法弄清楚为什么在上述步骤2之前它不能以class1结尾。 在class1中的webdriver之后立即初始化class2中的webdriver产生了一个奇怪的问题,即在不关闭class2的驱动程序的情况下,我无法在class1的末尾执行driver.close()。 并且由于class2已经具有其全局变量并且已初始化其webdriver,因此当class1测试完成后testNG最终移回到class2时,将忽略其webdriver初始化。 同样在运行时,我可以看到一个Web浏览器打开了一个路径(对于class1),然后转到了另一个路径(对于class2)。 只是不对。 有什么想法为什么testNG以这样的顺序运行?

事实证明,导致testNG在类之间跳过的问题是我在类级别而不是在方法(@Test)中初始化变量,类等。 您可以声明NULL对象,但除了方法内的任何地方,都不能将它们初始化为任何值。 这包括webdriver! 因此,基本上是一种设置方法,需要对类定义范围的任何say变量都需要在类中首先运行。 希望这可以帮助某人节省时间。 谢谢-JR

you can prioritize that runs in sequence in TESTNG:

you can define in annotations simply,


@Test(priority=0) // this will run first test
public void methdone()
{
}

@Test(priority=1)
public void methodtwo()
{
}
@Test(priority=2) // this will run as third test,
public void methodthird()
{
}
hope it helps !!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM