Условия для тестов в Visual Studio и .NET - PullRequest
4 голосов
/ 06 июня 2011

Возможно ли это сделать каким-то образом?

[Conditional("TEST")]
...

или

#if TEST

#end if

Причина в том, что я хотел бы заключить некоторую тестовую логику в библиотеку, не имеяизвлечь логику в собственный тестовый libray.

спасибо!

Ответы [ 3 ]

0 голосов
/ 06 июня 2011

Звучит так, будто вы хотите использовать директивы препроцессора ( доступно на C # , возможно, на других языках). В частности, использование #define в исходном коде и опции компилятора / define вместе с операторами #if. Вы не указали, какую версию .NET вы используете, но MSDN указывает, что она возвращается к .NET 1.1, по крайней мере с Visual Studio 2003.

0 голосов
/ 06 июня 2011

Просто создайте новую конфигурацию сборки, написанную @steenhulthin, и добавьте символ компиляции TEST.

Имя конфигураций сборки не имеет значения , но вы должны установитьусловные символы компиляции для этой конфигурации включают TEST (настройки проекта, страница "build" IIRC).Вы также можете определить символ компиляции в каждом файле, который вы хотите использовать, вместо настроек проекта.(#define TEST)

0 голосов
/ 06 июня 2011

Да, это возможно.

Создайте конфигурацию сборки с именем TEST и

[Conditional("TEST")]

в ваших методах.

Чтобы создать конфигурацию сборки в Visual Studio, перейдите в меню «Сборка» -> Диспетчер конфигурации.В разделе «Конфигурация активного решения:» выберите «новый ...».Дайте имя (TEST в вашем случае), и вы, вероятно, захотите установить Debug в «Копировать настройки из:».

Это также позволит вам использовать:

#if TEST
...
#end if

Однако используя#if скрывает раздел от компилятора, который, по моему опыту, является источником большой боли при переключении между конфигурациями сборки из-за переработанного кода, который нарушает другие конфигурации.

РЕДАКТИРОВАТЬ

@ Aaronaught упоминает, что условный атрибут будет не работать.Я думаю, что наивное решение использует #if.В этом случае вы можете захотеть сделать что-то вроде этого:

#if TEST
    [TestMethod()]
#endif

перед вашим методом теста, чтобы избежать сокрытия от компилятора не только атрибута TestMethod().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...