Подтвердить что ты не робот

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.

Спасибо заранее.

4b9b3361

Ответ 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