2013-05-11 1 views
7

Я тестирую довольно большой проект (C#, VS2012), и мне нужно организовать мой модульный тест в тестовой иерархии (например: теперь у меня 43 тестовых примера). Мне действительно нужна иерархия.Иерархия категорий тестов Visual Studio 2012 (Test Explorer)

У меня уже определены тестовые категории, а тестовый проводник показывает тестовые примеры по признакам. У меня есть категории в этом случае (один тест есть несколько категорий)

  • TestCase01: MainTestType, SubTestType, SubsubTestType
  • ...
  • TestCase10: MainTestType, SubTestType, SubsubTestType
  • TestCase11: MainTestType, SubTestType2 , SubsubTestType2
  • ...
  • TestCase15: MainTestType, SubTestType2, SubsubTestType2

Определяется так:

[TestMethod] 
    [TestCategory("MainTestType")] 
    [TestCategory("SubTestType")] 
    [TestCategory("SubsubTestType")] 
    public void MyTestCase() 
    { /* etc. */ 

Но Test Explorer, показывает следующее:

  • MainTestType: все испытания, имеющего категорию MainTestType
  • SubTestType: все тесты, имеющие категорию SubTestType
  • и т.д .. .

Так что я очень скучаю иерархии. Я пробовал «Cat1 \ Cat2 \ Cat3» или даже с /. Но ни одна иерархия не отображается. Вы знаете, как это сделать, или бесплатный аддон, который может сделать это для меня?

Мне также понадобится такая категоризация, потому что мы часто запускаем тесты из командной строки, и mstest.exe может запускать тесты для одной категории (например, все MainTestType или SubTestType). (Я придерживаюсь mstest, потому что половина команды использует vs2010). Но решение для vs2012 достаточно.

Заранее спасибо.

+1

Вы пытались использовать [Плейлисты] (http://blogs.msdn.com/b/visualstudioalm/archive/2013/01/30/first-ctp-for-visual-studio-update-2.aspx# плейлисты) от VS Update 2? Я не знаю, насколько легко будет поддерживать для вас эти плейлисты, но вы можете попробовать, если это действительно поможет вам. – outcoldman

+0

Знают плейлисты, но я ищу иерархическую catogerization (возможно, аддон). Но, возможно, это невозможно, мне было просто любопытно – cseppento

+0

Я этого раньше не видел. Вы можете попробовать с R #, если R # Unit Test explorer может это сделать или нет, но я не думаю, что это возможно. – outcoldman

ответ

6

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

  • построить проект
  • запустить MSText для всех тестов -> .trx выход
  • простых WinForms/программа wpf, которая анализирует .trx, получает тестовые примеры и отображает их в виде дерева.
  • теперь мы можем запустить mstest из этого приложения для выбранного узла -> создает выход .trx (который можно открыть в VS)

Я использовал .trx, потому что таким образом мне не нужно разбирать сборку, mstest.exe делает это. Тестовые категории сделаны таким образом:

[TestCategory("MainTestType")] 
[TestCategory("MainTestType/SubTestType")] 
[TestCategory("MainTestType/SubTestType/SubsubTestType")] 

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

+3

Можете ли вы поделиться своей полезной информацией, например? На GitHub? –

1

Test Explorer показывает только группы, следующие за тестом TestFilter/InnerTests.

Вкладка «Новый тестовый проводник» представляет собой общий контейнер. Используя специальные адаптеры/addon/plugin, вы можете интегрировать другие тестовые среды (NUnit, xUnit, Qunit, ...) в Test Explorer ... но эти адаптеры должны следовать интерфейсу тестового проводника.

Таким образом, это не поддерживается вкладкой «Проводник тестеров», в прошлом я не нашел способ расширить вкладку тестового проводника.

Возможно, еще одна тестовая структура позволит вам иметь иерархию, но это будет другая пользовательская вкладка и с другим атрибутом (TestCategory является атрибутом MSTest).

Просто для информации, вы можете ALOS сочетать черты в тестовом окне проводника таким образом

Trait:"MainTestType1" Trait:"SubTestType3" 
+0

Я знаю это, я ищу иерархическую организацию (визуальный) – cseppento

+0

Как я уже сказал, в собственной вкладке Test Explorer нет точки расширяемости. Он поддерживает только группировку и фильтрацию. – Cybermaxs

+0

Хорошо, тогда нет ответа, plase закрыть нить (если sy может) – cseppento

1

Для группировки используется VS2010 .vsmdi файлов, которые могут быть открыты в Test List Editor.

Насколько VS2012:

Visual Studio 2012 Update 1 http://www.microsoft.com/visualstudio/eng/visual-studio-update добавил в усовершенствования для поддержки как группировка и фильтрация по проекту и черты характера (категория). Использование этих функций подробно описано в этом блоге, http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/09/how-to-manage-unit-tests-in-visual-studio-2012-update-1-part-1-using-traits-in-the-unit-test-explorer.aspx

Group и фильтр класса завершен, и будет доступна в обновлении 2.

Я предлагаю вам переместить категории для имен, так что вы могли бы чтобы увидеть плоскую иерархию в окне TestView в столбце FullClassName.

+0

Я знаю это, я ищу иерархическую организацию (визуальный) – cseppento

0

Вы можете немного обмануть, сделав свой уровень 2 чертой конкатенации значений ваших первых двух уровней. Итак, если уровень 1 - это Animal, а уровень 2 - Mammal, у вас может быть Trapt «Animal.Mammal». В Test Explorer вы получите узел для Level1 [Animal], другой для Level1 [Plant], а затем один для Level2 [Animal.Tiger]. Я считаю, что фильтр поддерживает подстроки, поэтому это один из способов его сортировки. Вы все еще не получаете древовидную структуру (хотя, если вы были связаны и решились, вы можете попробовать расширенные символы канала ascii art, как и старая команда дерева DOS).

У вас также есть проблема, что вы не можете объединить разные черты (чтобы все птицы были вместе в списке полностью вниз).

С другой стороны, применение иерархической структуры при разрешении n-кортежей признаков было бы неудобным. Он должен был бы ограничивать элементы от более чем одного пути от вершины иерархии, определять и сообщать циклы, использовать элемент управления дерева поверх (или с матрицей), что есть сейчас. Кроме того, когда вы используете код рефакторинга и хотите, чтобы тесты были организованы параллельно, слишком большая существующая структура может вызвать головные боли.