Groovy 如何配置testng IReporter以接受参数

Groovy 如何配置testng IReporter以接受参数,groovy,testng,Groovy,Testng,IReporter是一个具有单个void generateReport(List xmlSuites、List suites、String outputDirectory)方法的接口。我想使reporter的行为可配置,以便在命令行上运行时可以向其传递选项。文档说明了如何在命令行上将参数传递给报告程序: -reporter自定义报表侦听器的扩展配置。与-listener选项类似,只是它允许 报告器实例上JavaBeans样式属性的配置。 示例:-记者 MyReporter:methodFilte

IReporter是一个具有单个
void generateReport(List xmlSuites、List suites、String outputDirectory)
方法的接口。我想使reporter的行为可配置,以便在命令行上运行时可以向其传递选项。文档说明了如何在命令行上将参数传递给报告程序:

-reporter自定义报表侦听器的扩展配置。与-listener选项类似,只是它允许 报告器实例上JavaBeans样式属性的配置。 示例:-记者 MyReporter:methodFilter=insert,enableFiltering=true 此选项的出现次数最多,每个 需要添加

因此,我似乎应该能够使用
-reporter com.my.reporter:key1=value1,key2=value2调用testng
但是我从哪里得到传入的值呢


我查看了testng提供的XMLReporter,它有一个
私有的最终XMLReporterConfig config=newXMLReporterConfig()行,但我不知道配置是如何填充的

Magic,就是这样做的:-)它似乎在类中查找实现相同名称的IReporter的实例变量。它确实需要一个比
对象
定义
更强的类型,尽管它看起来更强大。这里有一个例子

class MyReporter implements IReporter {
    int foo; //<-- populated when instantiated

    @Override
    void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) {
        println "foo = ${foo}"
    }
}
testng ... -reporter 'full.path.to.MyReporter:foo=42'