Соглашения об именах тестирования .NET

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

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

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

или же

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

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

Может даже должно быть: Тесты.Компания.Сайт и Тесты.Компания.Сайт.Контроль. и так далее.

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

Shawn Mclean 04.11.2013 22:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
22
1
8 789
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

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

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

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

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

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

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

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

F.D.Castel 11.11.2008 09:10

Однако это вызывает проблемы с указанными пространствами имен. Иногда это немного неприятно, почему я ищу ТАК предлагаемый способ сделать это ... (я не голосовал против)

Piotr Kula 31.10.2017 13:17

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

Я большой поклонник такой структуры тестового пространства имен:

Company.Tests.Website.xxx

Company.Tests.Website.Controls

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

Я предпочитаю:

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

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

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

Мы следуем встроенному подходу:

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

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

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

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

Ответ принят как подходящий

Я пойду с

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

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

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

-Кодовая папка

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

-Папка тестов

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

Также вам не нужно добавлять использование для пространства имен Company.Website таким образом.

justin.m.chase 04.05.2012 22:34

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

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

Tests.Website.dll вместе с фактической сборкой кода Website.Dll

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

  • Company.Namespace.Website
  • Company.Namespace.Website.Core
  • Company.Namspance.Website.Core.Tests
  • Company.Namespace.Website.Model
  • Company.Namespace.Website.Model.Tests

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

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

"начало становиться реальностью" omfg

Pablo Recalde 14.11.2018 13:04

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