2012-02-23 1 views
2

У меня есть определенные тесты, которые в основном выполняются в двух режимах. Один режим работает с минимальными данными, они предназначены для запуска после каждого фиксации. Другой режим работает с обширными данными, они предназначены для ночного запуска.Как я могу показать список тестов (MSTest) для запуска в одном из двух режимов из командной строки?

Прямо сейчас, я использую файл vsmdi для разделения моих тестов на разные списки с именем для фиксации и в ночное время, а мой сервер сборки вызывает их через командную строку, используя файл vsmdi и имя списка тестов. Для этого я должен сделать две разные функции [TestMethod]: одну для режима фиксации и одну для ночного режима. Тогда я, конечно, назначу их одному из двух списков.

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

+0

Командная строка Params [] – MethodMan

+0

+1, хороший вопрос. Как ваши данные связывают ваш тест? Используете ли вы базу данных или файлы scv? – Schaliasos

+0

Применимые тесты запрашивают тестовую базу данных, вызывая мою библиотеку бизнес-уровня. У меня был мой тестер, который сериализует входы и выходы, которые он считает правильными, а затем бросает их все в папку в тестовом проекте. Затем я использую сериализованные входные объекты для генерации тестовых выходных объектов. Затем я десериализую сохраненные выходные объекты и сравниваю их с соответствующим тестовым выходным объектом. –

ответ

1

Если ваш «обширный» набор данных занимает слишком много времени, вы можете столкнуться с проблемой с вашим набором данных. Вы должны иметь возможность охватить все ваши тестовые примеры в минимальном наборе данных, который выполняется быстро. Вот мой анекдот: однажды я написал что-то для создания штрих-кодов USPS. USPS очень любезно предоставили 10 000 тестовых примеров и ожидаемые результаты. Я покорно включил эти 10 000 тестовых примеров в отдельные модульные тесты. Тем не менее, я быстро понял, что эти 10 000 тестовых случаев были в значительной степени избыточными, и на самом деле было всего лишь пара десятков фактических тестовых случаев - остальное было шумом. Это то, что я подозреваю, происходит в вашем случае. Вы тестируете большой набор данных, который можно тестировать с гораздо меньшим.

Если, конечно, тестовый пример - то, как ваше приложение ведет себя при обработке большого набора данных. В этом случае разделите свои тесты на две сборки и сконфигурируйте свою сборку, чтобы запускать только «быструю» тестовую сборку на каждом контроле, а также каждую ночную сборку для запуска обоих.

+0

В моем случае каждый тестовый пример занимает несколько секунд. Я могу предвидеть, что мои ночные тесты работают в течение часа каждую ночь .. легко. –

+0

Наверное, мое тестовое покрытие «per commit» будет очень скудным. –

2

Вы можете добиться этого, используя атрибут категории MsTest на своих модульных тестах.

[Category("Foo")] 
[TestMethod] 
public void MyTest() { 
    // test 
} 

Вы можете разместить более чем одну категорию для каждого теста, чтобы вы могли смешивать и сопоставлять. Затем из командной строки вы можете запускать тесты с помощью переключателя /category и снова выбирать, какие тесты следует запускать. Выезд this link.

+0

О, это здорово. Могу ли я увидеть в коде какую категорию или категории тест во время выполнения? –

+0

'Category' должен быть' TestCategory', по крайней мере для Visual Studio 2015, с которым я пробовал это –