Java 如何在TestNG中为每个类分组优先级?
当我执行我的testNG项目时,它会根据优先级将我添加到同一Java 如何在TestNG中为每个类分组优先级?,java,selenium,testng,Java,Selenium,Testng,当我执行我的testNG项目时,它会根据优先级将我添加到同一下的不同类中的所有测试混合在一起。如何编写代码,以便在转到下一个类之前,我需要按优先级顺序在第一个类上运行所有方法 <test name="test1"> <classes> <class name="class1" /> <class name="class2" /> </classes> </test>
下的不同类中的所有测试混合在一起。如何编写代码,以便在转到下一个类之前,我需要按优先级顺序在第一个类上运行所有方法
<test name="test1">
<classes>
<class name="class1" />
<class name="class2" />
</classes>
</test>
第2类:
public class LearningTestNGTest2 extends masterClass
{
@Test(priority = 0)
public void testin_LearningTestNGTest2_Class()
{
System.out.println("Priority 0 (Class 2)");
}
}
XML:
在class1中,如果您在@Test of class1下使用了priority=1、2、3等等,那么测试方法的优先级为1、2、3。。。将首先执行,然后一旦在test name=“test1”下完成class1,控制将移到class2。否,优先级为2的class2将不会在优先级为3的class1之前执行。请参见下面的示例
public class AppTest
{
@Test(priority=1)
public void Test1()
{
System.out.println("Test1");
}
@Test (priority=2)
public void Test2()
{
System.out.println("Test2");
}
@Test(priority=3)
public void Test3()
{
System.out.println("Test3");
}
@Test(priority=4)
public void Test4()
{
System.out.println("Test3");
}
}
public class AppTest1
{
@Test(priority=1)
public void Test1()
{
System.out.println("Test1");
}
@Test (priority=2)
public void Test2()
{
System.out.println("Test2");
}
@Test(priority=3)
public void Test3()
{
System.out.println("Test3");
}
}
另外,您可以分享您的示例,其中在class1之前获得优先级为3的class2方法。在testng.xml中,使用
groupbyinstances=“true”
按类应用优先级
测试等级1:
public class TestClass1 {
@Test( priority = 1 )
public void testA1() {
System.out.println("testA1");
}
@Test( priority = 3 )
public void testA2() {
System.out.println("testA2");
}
@Test( priority = 5 )
public void testA3() {
System.out.println("testA3");
}
}
public class TestClass2 {
@Test( priority = 2 )
public void testB1() {
System.out.println("testB1");
}
@Test( priority = 4 )
public void testB2() {
System.out.println("testB2");
}
@Test( priority = 6 )
public void testB3() {
System.out.println("testB3");
}
}
testA1
testA2
testA3
testB1
testB2
testB3
测试等级2:
public class TestClass1 {
@Test( priority = 1 )
public void testA1() {
System.out.println("testA1");
}
@Test( priority = 3 )
public void testA2() {
System.out.println("testA2");
}
@Test( priority = 5 )
public void testA3() {
System.out.println("testA3");
}
}
public class TestClass2 {
@Test( priority = 2 )
public void testB1() {
System.out.println("testB1");
}
@Test( priority = 4 )
public void testB2() {
System.out.println("testB2");
}
@Test( priority = 6 )
public void testB3() {
System.out.println("testB3");
}
}
testA1
testA2
testA3
testB1
testB2
testB3
请查看示例xml文件
<suite name="testSuite">
<test name="MytestCase" group-by-instances="true">
<classes>
<class name="com.ui.test.TestClass1" />
<class name="com.ui.test.TestClass2" />
</classes>
</test>
</suite>
我希望它能对您有所帮助。但是如果在2类中有一个优先级为2的测试,那么它将在1类中优先级为3的测试之前执行。我想在1类中的所有测试完成之前停止移动到2类。这难道不可能吗?我已经在问题中添加了我的示例代码,我将得到以下预期输出:优先级0(类1中的默认值)优先级0(类1)优先级1(类1)优先级1(类1)优先级0(类2)。。您在优先级1(class1)之前获得了优先级0(class2),因为您的类正在扩展主类,而主类可能有一些影响执行顺序的代码。请删除master类并重试。不,这对我不起作用。在您的XML中编辑了XML,但我仍然得到了相同的输出,我已经运行了您的代码。它对我有用,输出是优先级0(类1中的默认值)优先级0(类1)优先级1(类1)优先级1(类1)优先级0(类2)您的输出是什么,您用于Testng Jar/依赖项和插件的版本是什么?输出是个问题。我使用的TestNG是(使用帮助->Eclipse marketplace安装):TestNG Jar/依赖的版本吗?请粘贴有问题的完整testng.xml。解决方案位于Testng.xml中。