2009-07-29 3 views
17

В моей testfixtrues NUnit У меня есть кой-что вдоль линииNUnit Категории в совокупности?

[Test,Category("catA")] 
public void test1 
{ 
    // 
} 

[Test,Category("catB")] 
public void test2 
{ 
    // 
} 

[Test,Category("catA")] 
[Test,Category("catB")] 
public void test3 
{ 
    // 
} 

Теперь в графическом интерфейсе NUnit я хочу, чтобы иметь возможность выбрать CATA и catB и запустить тесты, где CATA и catB присутствует. В настоящее время это не так, и NUnit проведет все 3 теста.

Есть ли способ изменить это поведение на условие AND, а не на ИЛИ?

Я в настоящее время работает v2.5.0.9122.

Заранее благодарен.

+1

Не уверен в GUI, но вы можете сделать это с консоли. См. Http://stackoverflow.com/a/19036057/206297. – ngm

ответ

14

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

Кстати, вам не нужно указывать [Test] два раза по вашему методу test3.

[Test] 
[Category("catA")] 
[Category("catB")] 
public void test3 
{ 
    // 
} 

Не то чтобы это имело значение. Это просто предпочтение в стиле.

1

Насколько я знаю, вы не можете выбрать оба из них, как стоит NUnit.

Я пробовал несколько разных вещей с помощью NUnit и того, как мои тесты были созданы без успеха.

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

+0

Да, я тоже натолкнулся на это. Я посмотрю еще раз и подумаю, как я могу сгинуть его с моей волей, но я думаю, что для этого нужно будет изменить nunit gui. – Stimul8d

2

Похоже, что вам нужна третья категория «catAandB».

+0

Да. Чтобы дать более конкретный пример, у меня есть категория под названием «Интеграция». У меня есть вторая категория под названием «База данных», которая является строгим поднабором «Интеграция». Итак, «Интеграция» похожа на «catAandB». – Anthony

17

на основе документации, вы просто говорите/включают в себя: CATA + CatB

http://www.nunit.org/index.php?p=consoleCommandLine&r=2.5.1

Указание Тестовые категории, чтобы включить или исключить

NUnit обеспечивает CategoryAttribute для использования в маркировке тестов как принадлежность к одной или нескольких категорий. Категории могут быть включены или исключены в тестовом прогоне с использованием опций/include и/exclude. Следующие команда выполняется только тесты в категории BaseLine:

NUnit-консоль myassembly.dll/включают: BaseLine Следующие выполнения команды все тесты, за исключением тех, в категории Базы данных:

NUnit-консоль myassembly.dll/exclude: База данных. В любой из этих опций можно указать несколько категорий, используя запятые для их разделения.

Примечания: Начиная с версии NUnit 2.4 опции/include и/exclude могут быть объединены в командной строке . Когда оба используются, все тесты с включены в категории категорий, за исключением тех, у кого нет исключенных категорий .

Начиная с NUnit 2.4.6, вы можете использовать категории Expression с либо из этих вариантов:

  • | B | C Выбирает тесты, имеющие любую из категорий A, B или C.
  • A, B, C Выбор тестов, имеющих любой из категорий а, в или С.
  • A + B + C Выбирает только тесты, имеющие все три категорий, присвоенных
  • A + B | C Выбирает тесты с а и в или с категорией с
  • A + BC Выбирает тесты как с A, так и с B, но не с C.
  • -A Выбирает тесты, не имеющие назначенной категории A
  • A + (B | C) Выбирает тесты, имеющие как категорию A, так и B или C Оператор запятой эквивалентен | но имеет более высокую точность. Порядок оценки является следующим образом:

    Одинарный оператор исключения (-) оператор высокого precendence объединение (,) Пересечения и набор операторов вычитания (+ и бинарные -) низкого приоритета объединение оператор (|) Примечание: Поскольку оператор имеет особое значение, вам следует избегать создания категории , которая использует любое из них в своем имени. Например, категория «db-tests» не может использоваться в командной строке, так как она отображается в , означает «запустить категорию db, за исключением тестов категории». То же ограничение применяется к символам, которые имеют особое значение для используемой вами оболочки .

+0

Кажется, что это почему-то не соблюдается. Никогда не видел эту логику категории от 2.4.6 раньше. Спасибо что подметил это. –

+0

J4SONc - Это, должно быть, было добавлено после моего времени на проект. Это круто. Спасибо что подметил это. –

0
"...nunit-console.exe" "....myassembly.dll" /include:catA+catB 
4

Если вы используете версию 3.0 используйте опцию --where. Пример:

nunit3-console.exe youdll.dll --where="cat==yourCat" 
Смежные вопросы