我试图在反射的帮助下执行我的测试脚本,反射注释为@test,如下所示:
Class<?> className = Class.forName(format); //Load the class name at runtime
Constructor<?> customConstructor = className.getConstructor(WebDriver.class); //Create customized constructor and initalize driver from testbase
Method[] method = className.getMethods(); //Call the list of methods in current class file
for (Method me : method) {
if (me.getName().startsWith("test")) { //Check wheather the class prefix as test
Method getMethods = Class.forName(format).getDeclaredMethod(me.getName()); //Loading all the methods at runtime.
if(getMethods.isAnnotationPresent(Test.class))
{
//The method which is annotated @Test will execute here, using invoke() method of reflection.
}
}
但是,问题是无法按照优先级值运行@测试方法。它是随机执行的。谁能告诉我如何根据优先级值运行@测试方法吗。
此外,我也尝试了dependsOnMethods。但它仍然是随机执行的。
示例代码:
package com.test.build;
import com.test.build.ClassA;
import com.test.build.ClassB;
import java.lang.reflect.*;
import java.util.Scanner;
import org.testng.annotations.Test;
public class ParentClass {
@Test
public void executeTestMetods() throws Exception {
Scanner scan = new Scanner(System.in);
System.out.println("Type package name");
String name = scan.next();
Class<?> class1 = Class.forName(name);
Method[] method = class1.getMethods();
for (Method me : method) {
if (me.isAnnotationPresent(Test.class)) {
if (me.getName().startsWith("test")) {
System.out.println(me.getName());
}
}
}
scan.close();
}
}
A类
package com.test.build;
import org.testng.annotations.Test;
@Test(singleThreaded = true)
public class ClassA {
@Test(priority=0)
public void test1()
{
System.out.println("class A");
}
@Test(priority=1)
public void test2()
{
System.out.println("Class A second method");
}
@Test(priority=2)
public void test3()
{
System.out.println("class A");
}
@Test(priority=3)
public void test4()
{
System.out.println("Class A second method");
}
@Test(priority=4)
public void test5()
{
System.out.println("class A");
}
@Test(priority=5)
public void test6()
{
System.out.println("Class A second method");
}
}
输出:
键入包名称com。测验建筑ClassA测试3测试4测试5测试6测试1测试2通过:executeTestMetods
=============================================默认测试
输出未按优先级正确执行,并显示随机调用。如何使其顺序执行?
TestNG为收件箱提供了一个专门的功能来做你想做的事情:注释转换器。
本文向大家介绍如何在TestNG中为测试用例设置优先级?,包括了如何在TestNG中为测试用例设置优先级?的使用技巧和注意事项,需要的朋友参考一下 通过为每种测试方法赋予优先级,我们可以按其执行顺序设置优先级。先运行优先级较低的测试方法,然后再执行优先级较高的测试方法。 示例 在Java类文件中,将首先运行,然后运行。
本文向大家介绍如何在Cucumber中设置测试方法的执行顺序?,包括了如何在Cucumber中设置测试方法的执行顺序?的使用技巧和注意事项,需要的朋友参考一下 我们可以通过order关键字来设置Cucumber中测试方法的执行顺序。在步骤定义文件中按顺序分配了测试方法。 顺序较低的测试方法首先执行,然后顺序较高的测试方法。 示例 步骤定义文件。 具有较低顺序的测试方法(login()设置为1)将首
我有两个SQS队列:一个用于低优先级,另一个用于高优先级消息。逻辑是不要接触低优先级队列上的消息,除非高优先级队列为空。 现在,我将这两条路由设置为同时使用队列中的消息。我想要的是,一个消息进入高优先级路由触发低优先级路由的停止。为了尝试获得此功能,我尝试使用一种路由策略,当在高优先级路由上启动新交换时,该策略将停止低优先级队列: (来自的片段) 然而,我不确定如何重新启动低优先级的消费者。骆驼提
问题内容: 我按以下顺序设置了线程的优先级 先是A然后是B,然后是C。但是当我在下面的程序中运行时,有时B在A之前运行。我不理解这种执行方式,因为我将B的优先级设置为小于A的优先级。 } 问题答案: 线程优先级可能不是您认为的那样。 线程的优先级是对操作系统的建议,在涉及这两个线程的任何调度或CPU分配决策点中,一个线程优先于另一个线程。但是,如何实现这一点取决于操作系统和JVM的实现。 Java
当我运行testing.xml时,testNG适合于它的运行,但当运行gradle测试任务时,它不执行测试 buildscript{ext{springBootVersion='1.4.1.release'}存储库{mavenCentral()}依赖项{classpath(“org.springframework.boot:spring-boot-gradle-plugin:${springBoo