NUnit Категории в комбинации?
В моем NUnit testfixtrues у меня есть что-то вроде строк
[Test,Category("catA")]
public void test1
{
//
}
[Test,Category("catB")]
public void test2
{
//
}
[Test,Category("catA")]
[Test,Category("catB")]
public void test3
{
//
}
Теперь в NUnit gui я хочу иметь возможность выбирать catA и catB и запускать тесты, в которых присутствуют catA и catB. В настоящее время это не так, и NUnit проведет все 3 теста.
Есть ли способ изменить это поведение на условие AND, а не на OR?
В настоящее время я запускаю v2.5.0.9122.
Спасибо заранее.
Ответы
Ответ 1
Нет. Нельзя запускать тесты, относящиеся к двум или более конкретным категориям. Честно говоря, когда мы впервые представили эту функцию несколько лет назад, я никогда не думал об этом. Мы старались держать его как можно проще.
Кстати, вам не нужно указывать [Test]
дважды по вашему методу test3
.
[Test]
[Category("catA")]
[Category("catB")]
public void test3
{
//
}
Не то, чтобы это имело значение. Это просто предпочтение стиля.
Ответ 2
на основе документов, вы просто скажете/включите: CatA + CatB
http://www.nunit.org/index.php?p=consoleCommandLine&r=2.5.1
Задание категорий тестов для включения или исключения
NUnit предоставляет атрибут CategoryAttribute для использования в тестах маркировки как принадлежащих
к одной или нескольким категориям. Категории могут быть включены или исключены в
тестовый запуск с использованием опций /include и/exclude. Следующие
команда запускает только тесты в категории BaseLine:
nunit-console myassembly.dll/include: BaseLine Следующая команда запускает все тесты, кроме тех, что относятся к категории базы данных:
nunit-console myassembly.dll/exclude: База данных Для каждой из них можно указать несколько категорий, используя запятые для их разделения.
Примечания. Начиная с NUnit 2.4 параметры /include и/exclude могут
быть объединены в командной строке. Когда оба используются, все тесты с
включены категории, за исключением тех, у кого исключены
категории.
Начиная с NUnit 2.4.6, вы можете использовать выражение категории с
любой из этих параметров:
- A | B | C Выбирает тесты, имеющие любую из категорий A, B или C.
- A, B, C Выбирает тесты, имеющие любую из категорий A, B или C.
- A + B + C Выбирает только те тесты, для которых назначены все три категории
- A + B | C Выбирает тесты как с A, так и с B с категорией C.
- A + B-C Выбирает тесты как с A, так и с B, но не с C.
- -A Выбирает тесты, не имеющие назначенной категории A
-
A + (B | C) Выбирает тесты, имеющие как категорию A, так и B или C
Оператор запятой эквивалентен | но имеет более высокую точность. Порядок оценки
следующим образом:
Унарный оператор исключения (-) Оператор объединения высоких скоростей (,)
Операторы пересечения и набора вычитания (+ и двоичные -)
Оператор объединения с низким приоритетом (|) Примечание: поскольку оператор
символы имеют особое значение, вам следует избегать создания категории
который использует любое из них в названии. Например, категория
"db-tests" не может использоваться в командной строке, поскольку он
означает "запустить категорию db, за исключением тестов категории". Такой же
ограничение применяется к персонажам, которые имеют особое значение для
shell, который вы используете.
Ответ 3
Если вы используете версию 3.0, используйте опцию --where
.
Пример:
nunit3-console.exe youdll.dll --where="cat==yourCat"
Ответ 4
Похоже, что вам нужна третья категория "catAandB".
Ответ 5
Насколько я знаю, вы не можете выбрать их обоих как NUnit.
Я попробовал несколько разных вещей с NUnit и тем, как мои тесты были созданы без успеха.
Я нашел сайт, в котором говорится о процессе создания настраиваемых атрибутов категорий, но до сих пор не вижу, как это может помочь.
Ответ 6
"...nunit-console.exe" "....myassembly.dll" /include:catA+catB