2014-09-20 2 views
0

IReporter - это интерфейс, который имеет один метод void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory). Я хотел бы настроить поведение репортера, чтобы он мог передавать ему параметры при запуске в командной строке. В документации объясняется, как передавать параметры репортеру в командной строке:Как настроить тестовый протокол IReporter для принятия параметров

-reporter Расширенная конфигурация для пользовательского прослушивателя отчетов. Подобно параметру -listener, за исключением того, что он разрешает конфигурацию свойств стиля JavaBeans 10 в экземпляре репортера. Пример: -reporter com.test.MyReporter: methodFilter = вставить, enableFiltering = верно Вы можете иметь столько вхождений этого варианта, по одному для каждого репортера, который должен быть добавлен.

Так что, кажется, я должен быть в состоянии назвать TestNG с -reporter com.my.reporter:key1=value1,key2=value2 но где я могу получить значение, переданное в.

Я посмотрел на XMLReporter, предоставленной TestNG, и она имеет private final XMLReporterConfig config = new XMLReporterConfig(); линию , но я не могу понять, как конфигурация когда-либо заселена.

ответ

1

Magic, вот как это делается :-) Кажется, он ищет переменные экземпляра на вашем классе, который реализует IReporter с тем же именем. Ему нужен более сильный тип, чем Object или def, хотя кажется. Вот пример.

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' 
Смежные вопросы