Должны ли тестовые классы .Net находиться в другом проекте? - PullRequest
1 голос
/ 18 июля 2009

Соглашение в Java отличается - каждый «модуль» (эквивалентный Java в IntelliJ) имеет каталог src и test. Таким образом, jUnit может работать для каждого проекта, и нет необходимости в отдельном тестовом проекте.

Ответы [ 5 ]

8 голосов
/ 18 июля 2009

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

4 голосов
/ 18 июля 2009

Как вы, вероятно, поняли, обычное соглашение .NET - иметь тестовый код в отдельной сборке (в общем, в Visual Studio каждый проект дает отдельную сборку).

Почему это так?

  • Предоставляет варианты развертывания
    Многие (в том числе и я) считают, что вам не следует развертывать тесты для производства.
  • Пределы проверки доступа
    Помогает убедиться, что тесты работают с открытым интерфейсом тестируемого кода, что повышает необходимость правильной разработки API (хотя иногда это является ограничением - см., Например, Вопрос 261177 )
  • Помогает держать каждый тест маленьким
    Раньше я проверял свои тесты в одном и том же проекте, но обнаружил соблазн повторно использовать слишком много кода, в результате чего модульные тесты выполняли слишком много и были слишком хрупкими.

Для чего бы то ни было, я держу свои тесты в отдельных проектах, хотя и в одном и том же решении, используя атрибут [InternalsVisibleTo] по мере необходимости. Я называю каждый тест как .Tests.dll, а затем использую подстановочный знак в сценарии NAnt, чтобы найти все тесты для запуска.

2 голосов
/ 18 июля 2009

Да - тестовые классы должны идти в своем собственном тестовом проекте.

0 голосов
/ 18 июля 2009

Примечание: одна из причин, по которой вы держите тесты в одном и том же пакете в Java, заключается в том, что ваши тесты имеют для размещения в одном пакете для тестирования методов, видимых для пакета. InternalsVisibleTo обходит это ограничение в .Net.

0 голосов
/ 18 июля 2009

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

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