Java TestNg优先级/按实例分组=";“真的”;不起作用

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(

我正在使用最新版本的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() {
        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] ------------------------------------------------------------------------