При запуске NUnit и указании категории можно ли включать в себя все некатегоризованные тесты? - PullRequest
7 голосов
/ 25 сентября 2010

У нас есть несколько сотен тестовых классов, из которых несколько десятков помечены следующими атрибутами: [TestFixture] [Явный] [Категория ( "IntegrationTests")] поэтому они будут работать только в нашей ночной автоматической сборке. Остальные TestFixtures не имеют указанной категории (и не помечены как явные).

Вот задача NAnt, которую мы выполняем для выполнения наших тестов:

<nunit2>
    <test>
        ...
        <categories>
            <include name="IntegrationTests" />
        </categories>
        ...
    </test>
</nunit2>

Это, конечно, не выполнит ни одного из некатегоризованных тестов.

Я бы хотел иметь возможность сделать что-то вроде этого:

<nunit2>
    <test>
        ...
        <categories>
            <include name="*" />
            <include name="IntegrationTests" />
        </categories>
        ...
    </test>
</nunit2>

где будут выполняться все некатегоризованные тесты вместе с интеграционными тестами. Это возможно? Если да, то каков синтаксис?

(Примечание. Я ищу решение NAnt, как описано выше, или решение командной строки NUnit. Я, безусловно, могу дважды запустить NUnit с разными параметрами или добавить Категории во все мои TestFixtures. Я использую, если нужно, но было бы более круто иметь возможность указывать некатегоризированные тесты напрямую.)

Ответы [ 2 ]

8 голосов
/ 02 ноября 2010

Я нахожусь в одной лодке и разочаровывался, пока не обнаружил, что атрибут Category можно применять не только к тесту или испытательному приспособлению, но и ко всей сборке.тестовые сборки с тестами, которые я запускаю локально, и еще один с тестами, которые должны выполняться только на сервере сборки.Я добавил этот атрибут в AssemblyInfo.cs в первых двух проектах: [assembly: NUnit.Framework.Category("Always")].Третий тестовый проект использует атрибуты категории, такие как [Explicit, Category("PublicDatabase")], как вы описываете.Сервер сборки вызывает NUnit с /include=Always,PublicDatabase и дает желаемый результат: запускаются все тесты в первых двух сборках и только PublicDatabase тесты в третьей сборке.в первых двух проектах я просто запускаю его на отдельных сборках, и вообще не нужно указывать категории.

0 голосов
/ 21 октября 2010

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

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

...