Запуск модульных тестов из VS2008 против использования mstest в командной строке

Недавно я столкнулся с некоторыми несоответствиями при выполнении модульных тестов внутри VS2008 по сравнению с запуском тех же модульных тестов с mstest в командной строке.

Мой сценарий немного продвинут, так что я, вероятно, попал в угол. У меня есть много модульных тестов, управляемых данными, работающих с одним и тем же источником данных. Еще мне нравится экспериментировать с PostSharp. Итак, я написал аспект PostSharp - TestDataSource, который я применяю к типу модульного теста, а не к методам модульного тестирования. Когда тип построен, этот аспект инструктирует PostSharp прикрепить атрибут DataSource к каждому методу модульного тестирования в типе.

Изучение встроенной сборки в Reflector показывает, что каждому методу тестирования действительно присвоен правильный атрибут DataSource. Выполнение тестов с помощью mstest в командной строке ведет себя должным образом - каждый тест запускается для указанного источника данных.

Однако выполнение точно таких же модульных тестов в VS2008 не может найти источник данных. Как будто VS2008 игнорирует построенную сборку и смотрит на исходный код, который, конечно, не выглядит как тест, управляемый данными, потому что атрибут DataSource вводится во время сборки.

Нет проблем с развернутыми элементами. Прикрепление DataSource к тестам вручную позволяет VS2008 успешно их запускать.

Любые идеи?


person mark    schedule 24.07.2009    source источник


Ответы (1)


Если вы поместите точку останова в свой тест и проверите список загруженных модулей, вы должны увидеть, какой именно путь является точным путем отлаживаемой сборки. Это ожидаемый (в bin \ Debug)? Если вы откроете этот файл с помощью Reflector во время работы отладчика, вы увидите внутри PostSharp?

Странно то, что часть модульных тестов PostSharp написана для MSTest и без проблем запускается из Visual Studio ...

person Gael Fraiteur    schedule 24.07.2009
comment
Загруженная сборка не из bin \ Debug, так как это модульный тест mstest. Он копируется в специальный каталог развертывания. Но это правильная сборка. Когда я проверяю его с помощью отражателя во время работы отладчика, я действительно вижу атрибут DataSource, введенный PostSharp в соответствующий метод модульного тестирования. Я не знаю, имеет ли это значение, но наши продукты не встроены в bin \ Debug, скорее, все проекты встроены в единый консолидированный каталог bin вне папки решения. DataSource - это особый атрибут. Вы пробовали PostSharping? - person mark; 26.07.2009
comment
Кстати, вы предпочитаете, чтобы я открыл для этого тему на форумах PostSharp? - person mark; 26.07.2009
comment
Мне действительно легче следить за форумом PostSharp. Если вы уверены, что MSTest загружает правильную улучшенную сборку, то я не знаю, что может быть не так. - person Gael Fraiteur; 26.07.2009
comment
Вы бы хотели, чтобы я изолировал этот случай и разместил на форумах PostSharp соответствующие проекты? - person mark; 26.07.2009
comment
Я перешел с mstest на MbUnit, так что сейчас это не стоит усилий. Спасибо, в любом случае. - person mark; 24.08.2009