2011-02-07 2 views
23

Я использую рубин исключительно в течение месяца, и мне это очень нравится. Тем не менее, мне очень сложно использовать или даже изучать TDD. Мой мозг просто не работает так ...Как узнать TDD с Ruby?

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

Может ли кто-нибудь дать мне какие-либо советы о том, как узнать TDD, чтобы я мог хотя бы начать считать себя ручным рутином?

+0

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

ответ

11

Лучший способ узнать TDD - это просто сделать это. Я предлагаю вам создать новый проект с использованием TDD. Это означает, что не записывают код без тестирования, если у вас нет теста на отказ.

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

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

Помните:

  • Написать тест, прежде чем писать код
  • Убедитесь, что тест не пройден! Это важно знать, что вы тестирования логики правильно
  • Перед записью следующего теста убедитесь, что все тесты успеха
  • Вы всегда можете очистить ваш код, если тесты продолжают работать вам не изменить дизайн
14

Пробег: RubyKoans.

+1

RubyKoans великолепны, потому что они учат рубину на основе тестов. Определенно хороший способ изучить TDD на примере. Также рекомендуется: [Ruby Best Practices] (http://www.amazon.com/Ruby-Best-Practices-Gregory-Brown/dp/0596523009/ref=sr_1_1?s=books&ie=UTF8&qid=1297070444&sr=1-1) – Mobbit

5

Это сложно сделать вашу голову вокруг TDD (и BDD), но книга RSpec Book - BDD мне очень помогла. Поведение, основанное на развитии, не совсем то же самое, что и TDD, но оно близко, и вы должны думать аналогичным образом.

3

Один тест за раз. Это единственный секрет, остальное только практика, но вам нужно сделать много практики ;-)

Вы уже имеете достаточно, чтобы начать работу: Ruby имеет test/unit библиотеку, что вполне достаточно начните с.

Попробуйте поиск по Ruby test/unit и Ruby TDD. Несколько полезных начальных точек, которые я нашел, - here и here.

Я бы начал практику с совершенно нового проекта, предпочтительно, боковой линии, где вы можете двигаться медленнее сначала. Будьте очень строги - весь код должен быть написан в результате неудачного теста. Вспомните третью часть мантры «красный-зеленый-рефактор» - вы скоро столкнетесь с бедой без нее (поверьте мне, я был там).

Как только вы почувствуете, что начинаете чувствовать себя комфортно с техникой (один знак может означать, что вы больше не выполняете цикл отладки кода), начните смотреть на некоторые альтернативы: rspec является основным, но есть и другие (riot, minitest является Ruby 1.9 по умолчанию, если вы на 1.8.x)

1

Я лично нашел скринкаст Peepcode RSpec очень полезны, они дают вам хорошее представление о том, что для тестирования плюс они заставят вас начать работу с RSpec быстро. Мне потребовалось некоторое время, чтобы начать работу с TDD, но это того стоит!

3

Я по-прежнему рекомендую TDD by Example от Kent Beck. Это легко прочитать и дает вам все основы.

1

Я согласен с ответами на вопрос о чтении «TDD by Example» Кент Бек и о реальном проекте, в котором вы вынуждаете себя делать это.

Вы также можете найти Back to Basics: Writing Unit Tests First полезным как ссылка на Ruby.

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