2

我遇到了 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 会产生一个奇怪的问题,即我无法在 class1 的末尾执行 driver.close() 而不关闭 class2 的驱动程序。并且由于class2的全局变量和webdriver已经初始化,当testNG在class1测试完成后最终回到class2时,它的webdriver初始化被忽略。同样在运行时,我可以看到一个网络浏览器打开一条路径(对于 class1)然后转到另一条路径(对于 class2)。这是不对的。任何想法为什么 testNG 以这样的顺序运行?

4

2 回答 2

0

事实证明,导致 testNG 在类之间跳过的问题是我在类级别而不是在方法(@Test)中初始化变量、类等。您可以声明 NULL 对象,但不能将它们初始化为除方法内之外的任何地方的任何值。这包括网络驱动程序!所以基本上是一个设置方法,第一个在类中运行对于任何需要限定在类范围内的变量来说都是必需的。希望这可以帮助某人节省一些时间。谢谢-JR。

于 2013-09-10T17:51:32.803 回答
-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 !!
于 2015-01-23T05:32:35.083 回答