我面临以下问题:我创建了两个包含@Tests优先级属性的类:
@Test( priority = 1 )
public void testA1() {
System.out.println("testA1");
}
@Test( priority = 2 )
public void testA2() {
System.out.println("testA2");
}
@Test( priority = 3 )
public void testA3() {
System.out.println("testA3");
}
Run Code Online (Sandbox Code Playgroud)
......而且......
@Test( priority = 1 )
public void testB1() {
System.out.println("testB1");
}
@Test( priority = 2 )
public void testB2() {
System.out.println("testB2");
}
@Test( priority = 3 )
public void testB3() {
System.out.println("testB3");
}
Run Code Online (Sandbox Code Playgroud)
我在testng.xml中将这两个类放在一个测试中,但是当我运行测试时,它将根据两个类的优先级命令我的@Tests:
testA1
testB1
testA2
testB2
testA3
testB3
Run Code Online (Sandbox Code Playgroud)
我期待以下结果:
testA1
testA2
testA3
testB1 …Run Code Online (Sandbox Code Playgroud) 首先,对不起我的英语,它不是那么完美:)
所以我面临以下问题:我正在尝试使用Selenium Grid和TestNg在不同的浏览器中运行并行测试,并且我在@BeforeTest方法中传递参数.我的问题是,当每个测试都被初始化时,似乎他们将使用最后一个测试的参数.因此,在此示例中,当我运行测试时,它将打开两个Chrome,而不是一个Firefox和一个Chrome. (browser.getDriver()方法返回一个RemoteWebDriver)
testng.xml文件:
<suite thread-count="2" verbose="10" name="testSuite" parallel="tests">
<test name="nameOfTheTestFirefox">
<parameter name="platform" value="windows"/>
<parameter name="browserVersion" value="32"/>
<parameter name="browserName" value="firefox"/>
<classes>
<class name="example.test.login.LoginOverlayTest"/>
</classes>
</test> <!-- nameOfTheTestFirefox -->
<test name="nameOfTheTestChrome">
<parameter name="platform" value="windows"/>
<parameter name="browserVersion" value="38"/>
<parameter name="browserName" value="chrome"/>
<classes>
<class name="example.test.login.LoginOverlayTest"/>
</classes>
</test> <!-- nameOfTheTestChrome -->
</suite> <!-- testSuite -->
Run Code Online (Sandbox Code Playgroud)
AbstractTest类:
public class SeleniumTest {
private static List<WebDriver> webDriverPool = Collections.synchronizedList(new ArrayList<WebDriver>());
private static ThreadLocal<WebDriver> driverThread;
public static BrowserSetup browser;
@Parameters({ "browserName", "browserVersion", "platform"})
@BeforeTest()
public static void …Run Code Online (Sandbox Code Playgroud)