Вопрос

Каковы наилучшие соглашения об именовании тестовых сборок в .NET (или на любом другом языке или платформе)?

В основном я разделяюсь между этими вариантами (пожалуйста, предоставьте другие!):

  • Вебсайт компании - проект
  • Компания.Сайт.Тесты

или

  • Вебсайт компании
  • Компания.Веб-сайтТесты

Проблема с первым решением заключается в том, что оно выглядит так, будто .Tests — это подпространство имен сайта, хотя на мой взгляд, они действительно более параллельны.Что происходит, когда в игру вступает новое подпространство имен, например Компания.Веб-сайт.Управление, где мне, например, разместить тесты для этого пространства имен?

Возможно, это даже должно быть: Тесты.Компания.Сайт и Тесты.Компания.Веб-сайт.Элементы управления, и так далее.

Это было полезно?

Решение

я пойду с

* Company.Website - the project
* Company.Website.Tests

Краткая причина и ответ просты: тестирование и проект связаны в коде, поэтому они должны иметь общее пространство имен.

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

-Папка с кодом

  • Вебсайт компании

-Папка с тестами

  • Компания.Сайт.Тесты

Другие советы

Я лично бы пошел с

Компания.Тесты.Сайт

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

На самом деле у меня есть альтернативный параллельный корень.

Тесты.Компания.Сайт

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

Я большой поклонник структурирования пространства имен тестов следующим образом:

Company.Tests.Website.xxx

Компания.Тесты.Веб-сайт.Управление

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

Я также предпочитаю добавлять префикс «Тесты» к фактическому имени сборки, чтобы можно было легко увидеть все мои сборки модульных тестов, перечисленные в алфавитном порядке, когда я массово выбираю их для загрузки в NUNit или любой другой тестовый пакет, который вы используете.

Итак, если бы веб-сайт был названием моего решения (и сборок), я предлагаю -

Тесты.Вебсайт.dll идти вместе с фактической сборкой кода Веб-сайт.Dll

Мы придерживаемся встроенного подхода:

Company.Namespace.Test
Company.Namespace.Data.Test

Таким образом, тесты максимально приближены к тестируемому коду, без необходимости переключаться между проектами или искать ссылки, чтобы убедиться, что существует тест, охватывающий конкретный метод.Нам также не обязательно поддерживать две отдельные, но идентичные иерархии.

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

На первый взгляд это кажется немного странным, но в долгосрочной перспективе это сработало для нас очень хорошо.

Я обычно называю тестовые проекты Проект-Тесты для краткости в обозревателе решений, и я использую Компания.Пространство имен.Тесты для пространств имен.

Я предпочитаю использовать:

Компания.Сайт.Тесты

Меня не волнуют какие-либо подпространства имен, такие как Company.Website.Controls, все тесты находятся в одном пространстве имен:Компания.Сайт.Тесты.Вы не хотите, чтобы ваши тестовые пространства имен ДОЛЖНЫ были параллельны остальной части вашего кода, потому что это просто приводит к тому, что рефакторинг пространств имен занимает вдвое больше времени.

Я предпочитаю Company.Website.Spec и обычно имею один тестовый проект для каждого решения.

Когда MVC начал становиться реальностью в мире веб-разработки .net, я начал думать в этом направлении.Помните, что M, V и C — разные компоненты, поэтому:

  • Компания.Пространство имен.Веб-сайт
  • Компания.Пространство имен.Веб-сайт.Core
  • Company.Namspance.Website.Core.Tests
  • Компания.Пространство имен.Веб-сайт.Модель
  • Компания.Пространство имен.Веб-сайт.Модель.Тесты

Веб-сайт — это ваш легкий вид.Ядро содержит контроллеры, помощники, интерфейсы представления и т. д.Core.Tests — это ваши тесты для указанного ядра.Модель предназначена для вашей модели данных.Самое интересное здесь то, что ваши модельные тесты могут автоматизировать тесты, специфичные для вашей базы данных.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top