在 TestNG 中设置测试方法优先级 XML

Setting test method priority in TestNG XML

问题:如何在 TestNG XML 中设置方法优先级,而不是将其添加到带有优先级标签的 class.method 级别?

我试图找到这个问题的答案,但我无法在任何地方找到这个具体点。

用例:我可以以编程方式生成 TestNG XML 并调用测试 基于作为数据源写入外部文件中的给定方法名称的方法。

我认为有不止一种方法可以做到这一点。使用实现 Annotation Transformer 的侦听器就是其中之一。你可以这样做:

public class SetPriorityListener implements IAnnotationTransformer {

    @Override
    public void transform(final ITestAnnotation annotation, final Class testClass,
        final Constructor constructor, final Method method) {
        if ("myTestName".equals(method.getName())) {
            annotation.setPriority(getTestPriority());
        }
    }

    private int getTestPriority() {
        //logic to get priority for this test
        return 0;
    }
}

您可以在官方文档中阅读更多关于 AnnotationTransformer 的信息:http://testng.org/doc/documentation-main.html#annotationtransformers