Разработка через тестирование и модульные тесты в .net - PullRequest
1 голос
/ 21 июля 2011

Хорошо, так что я - новый разработчик .net, я немного учился в колледже, но окончил колледж, занимаясь Coldfusion, и теперь переключился на новый проект в MVC3, используя TDD, EF, целых девять ярдов.

Я пытаюсь обдумать одну проблему с TDD.

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

В основном меня смущает то, как сосуществуют модульное тестирование и TDD.

Являются ли мои тесты TDD на самом деле модульными тестами, или мои тесты TDD являются просто способом помочь вмои проекты и затем я все еще использую модульные тесты, чтобы покрыть код?

У кого-нибудь есть какие-нибудь мысли?

Ответы [ 5 ]

3 голосов
/ 21 июля 2011

TDD тесты часто (но не всегда) модульные тесты. Примерами не модульных тестов могут быть пользовательские тесты с использованием WaitiN . Самый простой способ думать о TDD - это рассматривать его как дисциплину обеспечения того, чтобы как можно больше ваших требований (как деловых, так и технических) были выражены программно, чтобы вы могли последовательно и регулярно применять их к своей базе кода, чтобы гарантировать что вы все еще выполняете требования, когда вносите изменения.

На практике это имеет тенденцию приводить к появлению различных (некоторые утверждают, лучше) шаблонов в вашей архитектуре, обычно к разъединению, чтобы позволить модулям тестироваться изолированно. В более жестких средах TDD нередко сначала разрабатывать свой тест (чтобы он не прошел), а затем разрабатывать код для его соответствия. Эта дисциплина гарантирует, что ваши тесты полностью отражают цель ваших требований.

1 голос
/ 21 июля 2011

TDD тесты абсолютно могут быть юнит-тестами.

Они, безусловно, подпадают под определение «модульного теста» согласно Википедии: http://en.wikipedia.org/wiki/Unit_testing

1 голос
/ 21 июля 2011

На первый взгляд, тесты TDD очень похожи на модульные тесты. Это неудивительно, поскольку для создания обоих типов тестов вы используете среду модульного тестирования, такую ​​как Visual Studio Tests или NUnit. Но существуют различия между тестами TDD и юнит-тестами.

Как и модульные тесты, тесты TDD могут использоваться для регрессионного тестирования. Вы можете использовать тесты TDD, чтобы сразу определить, не нарушило ли изменение кода существующие функциональные возможности приложения. Однако, в отличие от модульного теста, тест TDD не обязательно проверяет одну единицу кода изолированно.

Как и приемочные тесты, тесты TDD используются для управления созданием приложения. Тесты TDD работают как мини-приемочные тесты. Вы создаете тест TDD, чтобы выразить функциональность приложения, которая должна быть реализована далее. Однако, в отличие от приемочного теста, тест TDD не является сквозным тестом. Тест TDD не взаимодействует с действующей базой данных или веб-сервером.

См. здесь для статьи.

0 голосов
/ 21 июля 2011

У Роя Ошерова (автора Art of Unit Testing ) есть достойное видео на эту тему:

Понимание разработки через тестирование

0 голосов
/ 21 июля 2011

Основное отличие состоит в том, что вы создаете тесты заранее (с указанием того, что вы хотите, чтобы ваш код делал), а не после этого (тестируя то, что вы уже написали).Теоретически, ваши тесты TDD уже должны охватывать производственный код, который вы пишете.Чистый TDD предлагает вам не писать строку нового производственного кода, если у вас нет провального теста, который требует этого.Имея опыт, вы можете решить, насколько близко вы хотите придерживаться этого принципа.

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