我遇到了TestNG Selenium Webdriver 2.0和Java的问题。我设置了断点并看到了最奇怪的行为。
我有几个包含测试组的类文件。每个类首先将一些变量全局初始化为类中的所有测试,包括调用另一个初始化webdriver的类。接下来是@BeforeClass,接下来是我的@Test测试。我正在从testng.xml文件运行类。
最近在调试问题时我发现在运行时,testNG会执行以下操作:
@BeforeClass并从那里结束......
为什么testNG会以这种方式运行。我试过单步,但testNG是编译代码,所以我无法弄清楚为什么它没有完成class1,在上面的第2步之前。在class1中的webdriver之后立即初始化class2中的webdriver会产生一个奇怪的问题,即我不能在class1的末尾执行driver.close()而不关闭class2的驱动程序。并且由于class2已经有了它的全局变量并且它的webdriver被初始化了,当testNG在class1测试完成后最终移回class2时,它的webdriver初始化被忽略。同样在运行时,我可以看到一个webbrowser打开一个路径(对于class1)然后转到另一个路径(对于class2)。这是不对的。有什么想法为什么testNG以这样的顺序运行?
答案 0 :(得分:0)
事实证明,导致testNG在类之间跳过的问题是我在类级别而不是在方法(@Test)中初始化变量,类等。您可以声明NULL对象,但可能不会将它们初始化为除方法内的任何值。这包括webdriver!所以基本上是一个设置方法,首先需要在类中运行任何需要作用于类的变量。希望这有助于节省一些时间。谢谢 - JR。
答案 1 :(得分:-1)
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 !!