Nunit: Прикрепление файлов к результату теста

Созданный на 15 июл. 2016  ·  34Комментарии  ·  Источник: nunit/nunit

Привет, народ,
Я новичок в NUnit, и мне интересно, как я могу добавить файл вложения для вывода в проводнике тестов.
В модульном тесте есть метод в вызове класса TestContext AddResultFile, который может это сделать.
Кто-нибудь может мне помочь.

Благодарность,
Giang

Epic done feature normal

Самый полезный комментарий

Эта функция просто необходима.
Мы запускаем наши автоматизированные тесты поведения с помощью NUnit и Selenium. Если тест не пройден, мы любим прикреплять снимок экрана браузера к результату теста: это отличный помощник для исправления теста.
Для этого нам пришлось использовать тестовую среду Microsoft, но она не так мощна, как NUnit (атрибут на уровне сборки или класса, общий тестовый класс ...). Поэтому мы с нетерпением ждем появления этой функции в NUnit.

Все 34 Комментарий

Упомянутый вами метод является частью класса TestContext в тестовой среде Microsoft. NUnit также имеет одноименный класс, но он не имеет отношения к классу MsTest и не имеет такого метода. В NUnit нет возможности прикреплять файлы к выходным данным.

Спасибо, Чарли.
Но будет ли метод AddResultFile добавлен в NUnit в будущем?
Этот метод действительно полезен.

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

Если да, то вам следует более подробно объяснить, как это будет работать. Как создаются файлы, где они хранятся и т. Д. Вы спрашиваете, действительно ли NUnit создает файлы или просто сохраняет на них ссылку?

Конечно, нам придется принять идею, расставить приоритеты и запланировать релиз.

Спасибо за ответ, Чарли.
Было бы здорово, если бы этот метод был добавлен в NUnit.
он будет работать так же, как метод AddResultFile класса TestContext в тестовой среде Microsoft.
что-то нравится связать результат теста (файл с результатом теста html или снимок экрана) с выходом теста в обозревателе тестов в VS. Вы можете увидеть снимок экрана, как показано ниже.

screenshot

Спасибо за идею. Я открою это заново.

Однако, чтобы пойти дальше, нам нужно выяснить, как это работает для самого NUnit, а не только для адаптера. Я отмечаю это как Идею, то есть то, что мы называем чем-то, что недостаточно хорошо определено, чтобы рассматривать его как будущую функцию. Может быть, другие люди присоединятся к вам с предложениями.

Что нам нужно учитывать:

  • Как это будет выглядеть в результате XML
  • Можем ли мы упаковать все это так, чтобы результат и вложения остались вместе?
  • Что с этим сделает консоль NUnit?
  • Будет ли NUnit gui отображать это каким-либо образом

Эта функция просто необходима.
Мы запускаем наши автоматизированные тесты поведения с помощью NUnit и Selenium. Если тест не пройден, мы любим прикреплять снимок экрана браузера к результату теста: это отличный помощник для исправления теста.
Для этого нам пришлось использовать тестовую среду Microsoft, но она не так мощна, как NUnit (атрибут на уровне сборки или класса, общий тестовый класс ...). Поэтому мы с нетерпением ждем появления этой функции в NUnit.

Я заменяю это функцией, требующей дизайна, что более основательно, чем идея. Нам все еще нужно решить вопросы, перечисленные в моем предыдущем комментарии.

Я предполагаю, что он либо сериализует файл в xml, либо сохраняет каталог, на который указывает ссылка. Один приводит к обширному xml, общей медлительности и файлам, требующим определенного интерпретатора, другой - к возможности отделения файлов от результатов и разрыва ссылок.

Какое из зол меньшее? Мне кажется, что в первом случае боль перевесит преимущества хранения всего в пакете - и достаточно иметь «надеюсь доступные» относительные ссылки.

  • Что с этим сделает консоль NUnit?
  • Будет ли NUnit gui отображать это каким-либо образом

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

Я предполагаю, что для этого потребуется, чтобы кто-то отправил PR, как только дизайн будет разработан -

Мы должны посмотреть, как MSTest хранит файлы. Я ожидаю, что для расширения Visual Studio потребуется ссылка на файл на диске.

Похоже, что ссылка в XML - это лучший способ. Для NUnit логическим начальным местоположением является рабочий каталог, в который по умолчанию помещается XML. Это решает мои первые два пункта выше.

Отвечая на другие мои вопросы:

  • Я предполагаю, что консоль будет делать не больше, чем перечислять вложения с путем, так же, как это делается для результатов.
  • В графическом интерфейсе может быть какое-то меню или панель для отображения вложений. Он может отображать их при условии, что приложение по умолчанию было определено для определенного типа файла.

Похоже, это хорошая функция, которую я бы предпочел повысить до нормального приоритета.

@rprouse Вы помните, как Галлио обрабатывал вложения?

Что должен включать элемент вложения с точки зрения атрибутов и элементов? Что-то вроде этого?

<attachments>
    <attachment  description="Final screen shot">ScreenShot.jpg</attachment>
    ...
</attachments>

Я предполагаю, что это дочерний элемент теста, который его произвел, поэтому у нас есть эта информация. Пользователи могут захотеть включить несколько снимков экрана, отсюда и описание. Что-нибудь еще?

Каков синтаксис для прикрепления чего-либо? Стоит ли использовать TestContext? Должен ли быть способ связать его с утверждением, чтобы вложение автоматически создавалось при сбое?

Кто-нибудь хочет написать для этого спецификацию?

Похоже, это хорошая функция, которую я бы предпочел повысить до нормального приоритета.

👍

@rprouse Вы помните, как Галлио обрабатывал вложения?

Нет, навесным оборудованием никогда не пользовался. Мне нравится ваш формат XML. Лично я считаю, что нам следует начать с добавления вложений из TestContext, поскольку это более простой путь. Затем мы можем оценить, хотим ли мы расширить это до утверждений.

Итак, TestContext.CurrentContext.AddAttachment ?

С перегрузками для (string path) и (string path, string description) ?

Может быть, у нас уже есть спецификация!

Пожалуйста, повысьте приоритет этой функции. Было бы очень полезно, чтобы в сводку результатов нашего теста можно было приложить скриншоты пользовательского интерфейса. Будут ли эти вложения доступны в результате сборки внутри VSTS (Visual Studio Team Services)?
Спасибо большое, Чарли

Я думаю, что это хорошая функция, и я буду публиковать вложения как артефакты сборки в TeamCity.

Я повысил его до обычного приоритета, поскольку @rprouse уже предложил это. Однако обратите внимание, что элементам с низким и нормальным приоритетом иногда приходится ждать, пока кто-то вдохновится на их реализацию - либо коммиттер NUnit, либо участник. Это скорее личное решение, чем решение команды относительно того, когда оно будет выполнено.

Надеюсь, об этом никто не забыл. Это была бы очень полезная функция.

Я думаю, что предыдущие комментарии разрешили все проблемы дизайна, поэтому я снимаю этикетку с дизайном и добавляю проблему реализации в Backlog.

Дело не столько в том, что мы забыли об этом, сколько в том, что у нас происходит очень много вещей. Как я уже упоминал в предыдущем комментарии, обычные приоритетные пункты, подобные этому, не планируются как часть нашего планирования выпуска. Кто-то из членов команды или сторонний участник должен заинтересоваться настолько, чтобы взяться за дело. Надеюсь, добавление его в список невыполненных задач побудит кого-нибудь сделать шаг вперед. В зависимости от ваших навыков, это можете быть вы! 😄

отличная особенность! был бы очень признателен. надеюсь, что это скоро кто-то реализует 😄

Я только что сделал PR для требуемой функциональности фреймворка для реализации этого в # 2152. Учитывая, что эту проблему отслеживают несколько человек, я планирую преобразовать ее в Epic и отслеживать поддержку бегунов, как только мы решим, что там делать.

Вот мои мысли:

VS адаптер
Это функция MSTest, поэтому инфраструктура адаптера VS уже имеет функции для отображения вложенных файлов. Просто нужно выяснить, как это подключить. 🙂

Консоль / NUnitLite
Я здесь в смешанном мнении. С помощью тестов с ошибками / предупреждениями имеет смысл показать путь к файлу / описание вложения вместе с результатом. Как насчет приставок к пройденным тестам? Должны ли мы иметь вывод «Информация», чтобы показать это? Таким образом, у консольных исполнителей будет три типа вывода - Информация / Предупреждения / Ошибки?

Графический интерфейс / Xamarin
Оба они должны в конечном итоге поддержать это, но я не думаю, что это высокий приоритет. Я буду создавать задачи, но не прикреплять их к этому эпику - они могут быть выполнены, когда есть спрос / позволяет время.

TeamCity
@NikolayPianikov - вы сказали, что вас это интересует. Возможно, стоит отслеживать # 2152. 🙂

Мысли обо всем вышеперечисленном? @ nunit / framework-team? Я сделаю отдельные вопросы, как только мы определимся с дальнейшими шагами.

Проблемы @ChrisMaddock также могут быть проблемами дизайна, поэтому вы можете сделать то, что говорит: «Выясните, как поддерживать вложения в

Для бегуна консоли в настоящее время мы не показываем все тесты, хотя это можно сделать. Любой подробный отчет можно обработать с помощью расширения или пользовательского XSL-преобразования. Последнее было бы тривиально реализовать для любого, кто хочет заниматься XSL-кодированием. 😄 Это могло быть внесенное преобразование.

NUnitLite - это сложно, поскольку мы хотим, чтобы он был очень легким. Однако предполагается, что пользователи будут называть свои вложения разумным образом и помещать их все в один каталог, поэтому их должно быть достаточно легко найти. Фактически, это работает и для консольного раннера.
Я думаю, что для графического интерфейса естественным является отображение названия и описания вложений вместе со всем остальным, касающимся результата теста. Мы могли бы сделать это ссылкой, если у пользователя установлено соответствующее приложение, которое откроет файл.

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

Я создал https://github.com/nunit/docs/issues/197 и https://github.com/nunit/nunit3-vs-adapter/issues/332, чтобы охватить следующие шаги.

Что касается поддержки бегунов - если единственными текущими вызовами для этого является интеграция с адаптером VS, я склонен просто реализовать его там, пока. Это функция, которая лучше подходит для графических бегунов, тогда cli - и другая поддержка бегунов всегда может быть добавлена ​​в будущем, если у людей возникнет необходимость.

@ChrisMaddock Я бы хотел увидеть поддержку вложений от консольного раннера.

@kdubau - идеальное время! 😄 В таком случае, как бы вы хотели, чтобы это выглядело? Каким будет ваш вариант использования?

Я мог представить себе добавление блока текста «вложения» для проверки ошибок / предупреждений, описания списка и пути к файлу. Одна из причин, по которой я обсуждал отказ от этого, заключается в том, что я не был уверен, что многие пользователи захотят скопировать / вставить путь к файлу из своей оболочки, чтобы найти соответствующий файл. Вы бы не согласились?

Другая проблема, о которой следует подумать, заключается в том, что в настоящее время консоль отображает только неудачные / предупрежденные тесты, а не все тесты. Должны ли мы создать третий список результатов («Информация»?), В котором будут показаны все пройденные тесты с вложениями?

Может быть, на самом деле было бы нормально, если бы консольный бегун показывал вложения только для неудачных тестов, так как это, возможно, все, что интересно в консольном запуске. Я представляю себе соответствующие файлы журналов для сбоев и тому подобное.

@kdubau Вместо того, чтобы описывать это здесь, я предлагаю вам создать новую проблему в репозитории nunit-console.

@ChrisMaddock @CharliePoole Возможно, я неправильно понял контекст здесь. Меня интересует только ссылка на вложения в выходном XML - нет необходимости фактически отображать информацию о вложении в выходных данных консоли. Мой вариант использования - чтобы моя система CI (Visual Studio Team Services) могла загружать вложения, перечисленные в XML, как артефакты сборки (так что ей просто нужна ссылка на файл на локальном диске).

Я был обеспокоен тем, что при запуске тестов через консольный бегун не будет вложений в XML, но после дальнейшего чтения я не думаю, что это был вопрос. Пожалуйста, поправьте меня, если я ошибаюсь :)

@kdubau - Ты прав. 🙂 # 2152 только что был объединен, что поддерживает вложения в результатах xml. Если все пойдет по плану, это станет частью NUnit 3.7, выпущенного на следующей неделе.

Верно ... если нам нужна «поддержка» в консоли, это будет означать нечто большее, чем просто сохранение XML, поступающего из фреймворка. В случае адаптера nunit3, я полагаю, @ChrisMaddock определяет, что это будет значить.

Привет, ребята, эта работа сделана или еще не закончена? Я не мог найти никаких открытых вопросов или PR, связанных с этим.

Приносим извинения, если я чего-то упускаю, но мои тестовые приложения все еще не отображаются в обозревателе тестов VS, как я ожидал. Я использую NUnit3TestAdapter 3.8.0 из NuGet и API TestContext.AddTestAttachement(file) но я не вижу вложений в обозревателе тестов. Я жду чего-то вроде этого:

image

Мои ожидания ошибочны?

@kdubau - Нет, это должно быть выпущено в NUnit v3.7 и NUnit3TestAdapter 3.8. См. Https://github.com/nunit/nunit3-vs-adapter/issues/332 для реализации. Этот вопрос остается открытым, так как я еще не дошел до добавления двух предложений необходимой документации ... 😱

Если это не работает, я бы сначала запустил ваши тесты в консоли NUnit - и посмотрел, правильно ли записано ваше вложение в XML-файле результатов. Если нет, откройте проблему в этом репозитории, если это так, откройте проблему в репозитории адаптера, и мы сможем продолжить расследование. 🙂

@ChrisMaddock хорошо, проблема создана https://github.com/nunit/nunit3-vs-adapter/issues/373

Благодаря мотивации @kdubau я наконец задокументировал эту функцию и могу закрыть этот Epic. 😄

Была ли эта страница полезной?
0 / 5 - 0 рейтинги