#c# #git #unit-testing
#c# #git #модульное тестирование
Вопрос:
У меня есть DataProvider
такой InitiateDataBase
метод.
void InitiateDataBase()
{
//Some codes before...
if (ShouldRecreateDataBase())
{
DeleateDataBase();
CreateDataBase();
}
//Some codes after...
}
В тестах, которые я использую DataProvider
(я создаю экземпляр DataProvider
при инициализации тестирования). В локальной, когда я меняю модель и запускаю некоторые тесты, база данных воссоздается. Но я не хочу всегда воссоздавать базу данных локально (это занимает несколько минут). На стороне сервера он всегда должен воссоздавать базу данных. Я хочу создать приложение, которое позволяет мне выбирать «воссоздавать базу данных или нет», но как я могу это сделать?
Комментарии:
1. Простой способ — добавьте логический параметр в InitiateDatabase, возможно, со значением по умолчанию true, а затем, когда вы вызываете его в тестовых сценариях, вы можете добавлять
false
, когда вы этого не хотите.2. Итак, в локальной я присваиваю false . Я провожу свои тесты. Это не приведет к воссозданию базы данных. Все в порядке. Но когда я хочу объединить свои изменения с веткой разработки, я должен присвоить ей значение true, не так ли?
3. В идеале вы должны запускать все свои тесты как модульные тесты, и они не воссоздают базу данных (или это происходит один раз перед запуском всех модульных тестов). При развертывании в режиме реального времени вы ничего не меняете, если функция принимает параметр bool со значением по умолчанию true.
Ответ №1:
Вы можете использовать директиву #if, поэтому при использовании отладочной версии с базой данных ничего не происходит. В производственной среде вы используете версию выпуска
void InitiateDataBase()
{
//Some codes before...
if (ShouldRecreateDataBase())
{
#if !DEBUG
DeleateDataBase();
CreateDataBase();
#endif
}
//Some codes after...
}
Комментарии:
1. Что, если я хочу воссоздать базу данных во время выполнения модульных тестов?
2. У вас могут быть свои собственные методы. Итак, когда вы запускаете проект, выбирается только конфигурация, при запуске в debug прямая ОТЛАДКА назначается автоматически. Например, у вас может быть 2 конфигурации отладки сборки, 1 для удаления, а остальные сохранить. И используйте что-то вроде #if KEEPDB
3. Я использую подобное, чтобы избежать изменений в коде перед публикацией. И вы можете протестировать отладочную версию на других машинах, не теряя контроля над изменениями кода… и избегайте публикации нежелательного кода в Prodution.