2017-02-01 2 views
0

В Visual Studio IDE я могу создать единичный тестовый файл с модульным тестовым классом для кода в исходном файле, щелкнув правой кнопкой мыши внутри проверяемого кода и выбрав вариант для создания модульного теста.Можно ли написать код для тестирования и код тестирования в том же исходном файле?

Код проверки и код, подлежащий тестированию, находятся не только в одном файле, но также не в том же пространстве имен.

Возможно ли написать код для тестирования и код тестирования в том же исходном файле?

Если да, то как? Должен ли я помещать их в одно и то же или разные пространства имен? Можете ли вы привести несколько примеров?

Спасибо.

+4

вы могли бы. но это не обязательно будет хорошей идеей –

ответ

0

Да, но

Если вы поместите их в той же кодовой базе, как тестируемая система, то вы будете не в состоянии развернуть систему без развертывания и тестов. Вы хотите, чтобы тесты сидели на ваших производственных серверах?

Кроме того, тот же файл app.config (или web.config, в зависимости от вашего решения) будет применяться как к вашим тестам, так и к тестируемой системе. Это означает, что вы не можете настраивать альтернативные конфигурации для таких вещей, как AutoFac, что обычно удобно для тестирования модулей и изоляции.

2

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

Однако, чтобы ответить на вопрос, просто используйте разные блоки namespace для разделения тестовых классов в отдельном пространстве имен.

namespace MyCompany.MyLibrary 
{ 
    // classes 
} 

namespace MyCompany.MyLibrary.Test 
{ 
    // tests, mocks, etc. 
} 
+0

Мне действительно нравится сохранять пространства имен одинаковыми для сут и тестового класса при разделении кода по имени проекта/сборки. Таким образом, у вас будет MyCompany.MyLibrary.dll и MyCompany.MyLibrary.Tests.dll. Тогда мне не нужно включать пространство имен MyCompany.MyLibrary в тестовый класс. – Fran

1

Да, нет ограничений, по которым происходит «проверка кода».

Хотя это несколько странно, вы можете иметь проект UnitTest и поставить код, который вы пытаетесь найти рядом с вашими тестами. Если вы хотите - даже в тех же файлах, используя те же или разные пространства имен по вашему выбору (C# не является Java и нет соединения, которое должно содержать имя файла/место и пространство имен)

Смежные вопросы