Java TestNg优先级/按实例分组=";“真的”;不起作用
我正在使用最新版本的testng。我有两个测试类,有4个@test方法,如下所示Java TestNg优先级/按实例分组=";“真的”;不起作用,java,selenium-webdriver,testng,Java,Selenium Webdriver,Testng,我正在使用最新版本的testng。我有两个测试类,有4个@test方法,如下所示 class TestClass1 { @Test(priority = 0, alwaysRun = true) public void test1() { System.out.println("Test1 of TestClass1"); } @Test(priority = 1, alwaysRun = true) public void test2(
class TestClass1 {
@Test(priority = 0, alwaysRun = true)
public void test1() {
System.out.println("Test1 of TestClass1");
}
@Test(priority = 1, alwaysRun = true)
public void test2() {
System.out.println("Test2 of TestClass1");
}
@Test(priority = 2, alwaysRun = true)
public void test3() {
System.out.println("Test3 of TestClass1");
}
@Test(priority = 3, alwaysRun = true)
public void test4() {
System.out.println("Test4 of TestClass1");
}
}
class TestClass2 {
@Test(priority = 0, alwaysRun = true)
public void test1() {
System.out.println("Test1 of TestClass1");
}
@Test(priority = 1, alwaysRun = true)
public void test2() {
System.out.println("Test2 of TestClass1");
}
@Test(priority = 2, alwaysRun = true)
public void test3() {
System.out.println("Test3 of TestClass1");
}
@Test(priority = 3, alwaysRun = true)
public void test4() {
System.out.println("Test4 of TestClass1");
}
}
我的TestNg.xml
<suite thread-count="2" verbose="10" name="testSuite" parallel="tests">
<test verbose="2" name="MytestCase" group-by-instances="true">
<classes>
<class name="com.sampleTests.TestClass1" />
<class name="com.sampleTests.TestClass2" />
</classes>
</test>
</suite>
其中,我总共有8个@Test方法,但它只是执行每个类的第一个测试,忽略其余的测试,没有任何堆栈跟踪。看起来像TestNG中的一个bug。看起来它无法正确初始化您的套件,因为您强制它按实例分组测试,但优先级是一个跨类属性,也应该得到尊重。因此,它无法决定下一步应该运行什么
无论如何,最好使用组和dependsOnMethod/Group选项,而不是优先级。对于此问题,与Group by没有连接 它是主类绑定的原因。单个类下的多个类,其中TestNG以Java类名开始优先级,然后继续 您可以通过多种方式解决问题:
- 不要将@Test放在Java绑定类下。并将这两个类分开,您将成功执行8个测试。
- 从Java绑定类中删除优先级。 priority只在Java绑定类中执行单个测试
注意:此解决方案仅适用于单个类下有多个类的情况。单个类和多个@Test可以正常工作。当您将其称为Maven Test时,您是否得到了它?@Ishita Shah-ya正在使用mvn命令执行。mvn测试。如果我不使用group by instances=“true”,那么它首先从每个类执行优先级为1的测试用例,然后执行优先级为2的测试用例,然后执行优先级为3的测试用例,而不是执行优先级为1、2、3的第一类和优先级为1、2、3的第二类,这两个“TestClass1和TestClass2”都是两个不同的类。我对执行顺序的期望是:首先,它应该执行
TestClass1=>test1、test2、test3、test4
,然后执行TestClass2=>test1、test2、test3、test4
,但是当我删除groupbyinstances=“true”时
它执行TestClass1=>test1,TestClass2=>test1,TestClass1=>test2,TestClass2=>test2,testtclass1=>test3,TestClass2=>test3,TestClass1=>test4,TestClass2=>test4
@AtitkumarShingatalur请查看我的答案。第一个解决方案可以工作。在第一个解决方案中,执行顺序是TestClass1=>test1,TestClass2=>test1,TestClass1=>test2,TestClass2=>test2,testtclass1=>test3,TestClass2=>test3,TestClass1=>test4,TestClass2=>test4
&在第二个解决方案中,执行顺序满足了我的要求,但是你已经删除了@Test的优先级,这里它是按顺序执行的,bcz测试名称是按顺序执行的,但是在我的项目中,我的测试名称是不同的,我希望它们按顺序执行,所以我需要优先级&我需要输出为TestClass1=>test1,test2,test3,test4
,然后TestClass2=>test1,test2,test3,test4
TestNG版本am使用的是6.14。3@AtitkumarShingatalur您是否找到了上述问题的解决方案。
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.141 s - in TestSuite
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------