[Allure, NUnit] Не строится отчет в TeamCity

Привет. Установил плагин Allure для TeamCity. В Build Steps -> NUnit -> Run tests from прописал пути:

**\Test.dll
**\Test\bin\Debug\NUnitAllureAdapter.dll

Тесты проходят, но сам отчет пустой. У меня есть подозрение, что отчет не строится, потому что тесты запускаются через TeamCity’вский NUnit runner, и по окончании в папке проекта не формируется TestResult.xml, на основе которого, если правильно я понимаю, строится и сам Allure отчет.Если это так, то какие есть пути решения этой проблемы?

Да, ваше предположение правильное.
Я использовал allure-nunit adapter и запускал все тесты через nunit console, используя TeamCity.

Понятно…Я ожидал, что прикрутка будет проще. И печально, что не получится использовать TeamCity’вский runner.
А какой вы Build step использовали для запуска NUnit Console?

Просто Command Line с nunit-console командой ну и там уже параметры-)
А что бы после этого сразу создавался репорт в артифактах создают еще один билд степ с command line в котором я генерирую xml отчет в html используя allure-cli(не забудьте в кондишенах запуска поставить, чтобы комманд лайн степ выполнялся даже если предедущие степы зафейлились).

Хм…а без allure-cli разве нельзя обойтись? Я, правда, через nunit console не пробовал прогонять тесты, а лишь через GUI, куда помимо dll проекта добавлял assembly NUnitAllureAdapter.dll, и по окончании выполнения тестов создавался xml отчет.
А чтобы отчет трансформировался в html, эту проблему по идее должен решать как раз плагин Allure TeamCity.

Возможно, я выбрал более проверенный способ.
Если что, будут вопросы, обращайтесь.

Могли бы вы привести рабочий пример запуска тестов через консоль и формирования с ними результатов?
Я делал так:

C:\Program Files (x86)\NUnit 2.6.3\bin>nunit-console.exe /xml:C:\Users\user\Source\Workspaces\MAP\QA\Autotests\PlusTest\bin\Debug\TestResult.xml C:\Users\user\Source\Workspaces\MAP\QA\Autotests\PlusTest\bin
\Debug\PlusTest.dll C:\Users\user\Source\Workspaces\MAP\QA\Autotests\PlusTest\bin\Debug\NUnitAllureAdapter.dll

Тесты в результате у меня запустились, внутренний NUnit’вский отчет сформировался, а отчет Allure нет.

По порядку:

  1. Качаем Allure-nuni adapter: allure-nunit adapter
  2. Делаем все настройки, которые описанны на ГитВики
  3. Качаем Allure-cli allure-cli
  4. Создаем в TeamCity:
  • Command Line билд-степ в котором пишем nunit-console C:\Users\user\Source\Workspaces\MAP\QA\Autotests\PlusTest\bin \Debug\PlusTest.dll
  • Создаем еще один билд степ с Command Line с надстройкой Execute: Even if some of the previous steps failed и путь к allure-cli/allure.bat generate path/to/directory/with/xml/file - путь к хмлке вы берете из степа 3, где вы указываете куда будут создаваться allure-xmlки

И это все, ах да, что бы сразу отчет можно было посмотреть в Тимсити артефактах, укажите путь к фолдеру где буду храниться html отчеты в Artifacts path(General Setting секция)

2 лайка

Спасибо. Но пока не запустилось :frowning:
Есть какие-то проблемы с исполнением файла allure.bat

C:\Users\user\Downloads\allure-cli-master\allure-cli-master\src\main\scripts>allure.bat

Error: JAVA_HOME is set to an invalid directory.
JAVA_HOME = "C:\Program Files\Java\jdk1.7.0_75\bin\"
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.

"-jar" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

а по поводу пути к xml - это путь, где будет сохраняться отчет или это путь, где лежит xml отчет, созданный NUnit? Дело в том, что Allure’вский отчет у меня не создается. Возможно, я не правильно подключил сам NUnit Allure Adapter? В инструкции как-то расплывчато написано, что нужно положить в директорию C:\Program Files (x86)\NUnit 2.6.3\bin\addins бинарники. Речь идет только о cs файлах из папки NUnitAllureAdapter? Или там должны лежать dll-ки?

Нужно было качать: allure-nunit2-0.2.1.zip и все заэкстрактить в C:\Program Files (x86)\NUnit 2.6.3\bin\addins
Путь к xml прописывается в файле bin\addins\config.xml собственно, что означает - после каждого прогона теста через nunit результат будет по этому пути.

На счет ошибки с JAVA_HOME, все просто, укажите в систем вериблах JAVA_HOME переменную и укажите путь к jdk, смотрите скрин: Screenpresso Cloud

Я сначала сам проект NUnitAllureAdapter добавлял в свои тесты. Из-за этого отчеты не формировались. Теперь все OK. Однако до окончательного штриха осталась проблема с батником, но теперь нужно указать путь к ALLURE_HOME. Я в переменных окружения указал путь, где лежит сам батник. Но видимо это не верный путь?

C:\Users\user\Downloads\allure-cli-master\allure-cli-master\src\main\scripts>allure.bat  generate "C:\Program Files (x86)\NUnit 2.6.3\bin\AllureResults"

Error: ALLURE_HOME is set to an invalid directory.
ALLURE_HOME = "C:\Users\user\Downloads\allure-cli-master\allure-cli-master\src\m
ain\scripts\.."
Please set the ALLURE_HOME variable in your environment to match the
location of your Allure installation.

"-jar" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

Вы указываете просто не правильный путь к самому allure.bat вот и все.

На самом деле оказалось, что я скачал сначала какую-то левую сборку, в которой отсутствовала папка lib с jar файлом.

Заработало, но очет из xml не строится. Здесь наверное ошибка уже на стороне Allure

C:\allure-cli\bin>allure.bat generate "C:\Program Files (x86)\NUnit 2.6.3\bin\AllureResults"
Error on line 196
  XTDE0410: An attribute node (version) cannot be created after the children of
the containing element
  at xsl:call-template name="copy-all-without-namespace" (#192)
  at xsl:apply-templates (#27)
     processing /alr:allure-test-run/test-suites[1]/test-suite[1]/@version
  at xsl:apply-templates (#197)
     processing /alr:allure-test-run/test-suites[1]/test-suite[1]
  at xsl:call-template name="copy-all-without-namespace" (#192)
  at xsl:apply-templates (#14)
     processing /alr:allure-test-run/test-suites[1]
  in built-in template rule
java.lang.reflect.InvocationTargetException

Прочел тут длинную переписку Documentation lacking · Issue #382 · allure-framework/allure1 · GitHub по такой же проблеме, но я не понял получилось ли у автора решить эту проблему.
Если добавлять версионность -v 1.4.1, то ошибка уже другая:

C:\allure-cli\bin>allure.bat generate "C:\Program Files (x86)\NUnit 2.6.3\bin\AllureResults" -v 1.4.1
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further detail
s.
log4j:ERROR A "org.apache.log4j.ConsoleAppender" object is not assignable to a "
org.apache.log4j.Appender" variable.
log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
log4j:ERROR [java.net.URLClassLoader@5d03462c] whereas object of type
log4j:ERROR "org.apache.log4j.ConsoleAppender" was loaded by [sun.misc.Launcher$
AppClassLoader@75da931b].
log4j:ERROR Could not instantiate appender named "console".
Successfully generated report to [C:\allure-cli\bin\allure-report].

Сама html-ка, правда, при этом создается, но на странице различные ошибки.

С другой стороны я попробовал открыл отчет через Firefox, и никаких ошибок! Информация отображается нормально.

В той же простыне-переписке было и написано, что ошибка с предпоследнего поста не критична и репорт генерится все равно.

Евгений, еще раз здравствуйте. У меня появилась проблема с генерацией отчета через TeamCity. Он создается, но не правильно (ложный статус прохождения тестов и отсутствие скриншотов при ошибке). Вот что пишет AllureLog:

2015-03-30 15:03:53,535 [EventPumpThread] ERROR NUnitAllureAdapter.AllureEventListener - Exception in TestFinished "NUnit.Core.TestResult"
System.ComponentModel.Win32Exception (0x80004005): The handle is invalid
   at System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY, Int32 destinationX, Int32 destinationY, Size blockRegionSize, CopyPixelOperation copyPixelOperation)
   at System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY, Int32 destinationX, Int32 destinationY, Size blockRegionSize)
   at AllureCSharpCommons.Utils.AllureResultsUtils.TakeScreenShot()
   at NUnitAllureAdapter.AllureEventListener.TakeScreenshot()
   at NUnitAllureAdapter.AllureEventListener.TestFinished(TestResult result)

Хотя при запуске через консоль руками - все нормально. Сталкивались ли с подобной проблемой?

Да, у меня также было.
Вроде было создано ишью где-то по этому поводу, но я так понял не было пофикшено еще.

Солюшен для меня на данный момент, я просто перешел на генерацию отчета в html по стандартным xml отчетам Nunit-а.

П.С. возможно я что-то упустил и у меня такая же проблема как и у вас, а возможно если запускается через консоль Teamcity то нужно по другому “приседать” и делать какой-то воркераунд.

Вообще в документации TeamCity говорится о каком-то TeamCity Addin for NUnit TeamCity Addin for NUnit | TeamCity Documentation , но я не могу понять где он находится.

С этим Allure’ом столько провозился, что думаю уже может обойтись стандартным отчетов. А каким образом вы генерируете стандартный отчет в html? Для этого существует какой-то плагин?

Ну я просто делаю отпут в xml стандартным способом у Nunit.
А потом использую например: NUnit Orange