Selenium 测试在整个套件中按优先级执行,而不是使用TestNG和Gradle执行类
全部。我将IntelliJ IDEA与Selenium、TestNG和Gradle一起使用。在我给项目添加了渐变后,我的测试以奇怪的优先级运行。 因此,我有一个XML文件用于运行TestNG:Selenium 测试在整个套件中按优先级执行,而不是使用TestNG和Gradle执行类,selenium,gradle,intellij-idea,automated-tests,testng,Selenium,Gradle,Intellij Idea,Automated Tests,Testng,全部。我将IntelliJ IDEA与Selenium、TestNG和Gradle一起使用。在我给项目添加了渐变后,我的测试以奇怪的优先级运行。 因此,我有一个XML文件用于运行TestNG: <suite name="Mobile. Firefox. 320x480"> <parameter name="browserType" value="firefox" /> <parameter name="resolution" value="320x480"/>
<suite name="Mobile. Firefox. 320x480">
<parameter name="browserType" value="firefox" />
<parameter name="resolution" value="320x480"/>
<listeners>
<listener class-name="Listeners.Listeners"/>
</listeners>
<test name="320x480">
<classes>
<class name="TestsPerPage.TopMenu.TopMenuTests"/>
<class name="TestsPerPage.TopMenu.EstimateProjectTests"/>
</classes>
</test>
EstimateProjectTests.class:
public class TopMenuTests extends SetupDriver {
TopMenuPageObjects topmenuPO;
@BeforeClass
public void initClasses(){
topmenuPO = new TopMenuPageObjects(driver);
System.out.println("Before Class TM");
}
@Test(groups = {"mobile"}, priority = 3)
public void mobilePortfolioOpen() {
System.out.println("Test TM, priority = 3");
}
@Test(groups = {"mobile"}, priority = 4)
public void mobileHomePageOpen() {
System.out.println("Test TM, priority = 4");
}
@Test(groups = {"mobile"}, priority = 5)
public void mobileCompanyPageOpen() {
System.out.println("Test TM, priority = 5");
}
public class EstimateProjectTests extends SetupDriver {
EstimatePageObjects estimatePO;
@BeforeClass(groups = "mobile")
public void initMobileClasses() {
estimatePO = new EstimatePageObjects(driver);
System.out.println("Before Class EP");
}
@Test
public void estimatePageOpen(){
System.out.println("Test EP, priority = 0");
}
@Test(priority = 1)
public void mandatoryFieldsCheck(){
System.out.println("Test EP, priority = 1");
}
@Test(priority = 1)
public void labelsCheck(){
System.out.println("Test EP, priority = 1");
}
因此,在运行XML文件之后,最后应该:
运行TopMenuTests.class->RunbeforeClass->按优先级运行所有测试
运行EstimateProjectTests.clall->RunbeforeClass->按优先级运行所有测试
输出应为:
Before Class Tm
Test TM, priority = 3
Test TM, priority = 4
Test TM, priority = 5
Before Class EP
Test EP, priority = 0
Test EP, priority = 1
Test EP, priority = 1
但在我将Gradle连接到该项目后,我得到了以下输出:
Before Class Tm
Before Class EP
Test EP, priority = 0
Test EP, priority = 1
Test EP, priority = 1
Test TM, priority = 3
Test TM, priority = 4
Test TM, priority = 5
因此,首先运行所有@BeforeClass,然后以某种“全局”优先级运行所有测试
有人面临同样的问题吗
我的毕业代码:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "io.qameta.allure:allure-gradle:2.3"
}
}
plugins {
id "io.qameta.allure" version "2.5"
}
group 'com.indeema.web-site-automation'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: "io.qameta.allure"
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
allure {
version = "2.2.1"
autoconfigure = true
aspectjweaver = true
allureJavaVersion = "2.0-BETA18"
}
dependencies {
testCompile group: 'org.testng', name: 'testng', version: '6.10'
compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.8.1'
}
test {
useTestNG()
}
另外,对于这么多的文本,我很抱歉,我不知道如何用更简短的方式来解释。若从命令行运行Gradle测试,您是否尝试过比较结果?看起来Gradle对测试执行顺序没有任何控制权:是的,我已经试过了。从命令行将XML文件作为TestNG套件或./gradle测试运行-得到相同的结果。@SilverK这里运气好吗?我面临着同样的问题,似乎没有已知的解决方法