Настройка отчета Junit 4 XML - PullRequest
0 голосов
/ 23 января 2019

Справочная информация:

TestNG поддерживает добавление собственных классов Reporter для изменения создаваемых отчетов или создания новых отчетов по мере необходимости.

Однако JUnit не имеет такой функциональности, поэтому грубым способом было бы написать своего собственного Runner, а затем сгенерировать свой собственный отчет.

Но я задаю этот вопрос, чтобы выяснить, есть ли что-то лучше?

По сути, я хочу добавить пользовательский атрибут для каждого выполняемого метода.

<testcase name="test_test_something" classname="some.class.name" time="0.069" my-own-attribute="somevalue"/>

Итак, мой вопрос:

  • Как этот отчет XML генерируется JUnit и Gradle?

  • Есть ли способ изменить этот процесс создания отчета, чтобы добавить пользовательские данные в отчет при минимальных изменениях?

1 Ответ

0 голосов
/ 31 января 2019

Как этот отчет XML генерируется JUnit и Gradle?

В конечном итоге он генерируется внутренним классом Gradle org.gradle.api.internal.tasks.testing.junit.result.JUnitXmlResultWriter.

Как правило, я хочу добавить пользовательский атрибут для каждого выполняемого метода.

<testcase name="test_test_something" classname="some.class.name" time="0.069" my-own-attribute="somevalue"/>

[…] Есть ли способ изменить этот процесс создания отчета, чтобы добавить пользовательские данные в отчет при минимальных изменениях??

К сожалению, нет способа добавить дополнительные атрибуты к элементу <testcase/>. Этот код показывает, как элемент и его атрибуты создаются в настоящее время;нет никакого способа подключиться к этому процессу создания.


Если вы можете жить с хакерским решением, тогда вы можете попробовать записать свои пользовательские данные в StdOut / StdErr во время теста и установить outputPerTestCase свойство выглядит следующим образом:

// (configuring the default `test` task of the `java` plugin here; works with
// any task of Gradle’s `Test` type, though)
test {
    reports {
        junitXml {
            outputPerTestCase = true
        }
    }
}

Записанный вывод в конечном итоге будет по крайней мере где-то внутри элемента <testcase/>, и вы сможете использовать его оттудакак-то.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...