Вруб является неуклюжим и больше сохраняется. Я переключился на "Декомпилятор Java" , который имеет гладкий UI и поддержку новых функций языка.
Каждый декомпилятор, который я использовал, тем не менее, сталкивается с кодом, который он успешно не декомпилирует. Для тех это помогает понять демонтированный Байт-код Java, произведенный стандартным инструментом JDK, javap.
Какую статью о Ruby on Rails TDD 101 мне следует прочитать?
Я начну с руководства по тестированию приложений rails .
Также Railscast содержит отличные скринкасты о том, как использовать различные инструменты тестирования.
Что мне нужно тестировать?
Я начну с моделей, поскольку их легко тестировать. Простое правило состоит в том, что вам нужно охватить все операторы if в вашем тесте.
Вам следует проверить цель метода (чтобы убедиться, что он работает должным образом), а также все крайние случаи.
Также убедитесь, что вы не закончили тестирование.
Какой гем / плагин мне следует использовать? Стоит ли использовать rspec? Что-нибудь еще?
При запуске просто используйте Test Unit
. Вы можете использовать rspec
или огурец
после того, как познакомитесь с основами.
Автотест
- хороший инструмент, если вы хотите по-настоящему испытать себя. Но это не требуется.
Когда у меня есть все классы тестирования, как мне перейти и развернуть их?
Не уверен в вопросе. Обычно вы не развертываете тесты. После того, как у вас есть все классы тестирования, просто введите rake test для запуска всех ваших тестов.
Сколько времени на самом деле занимает TDD?
Это действительно экономит время. Если вам нравится головоломка-лабиринт, вы знаете, что ее почти всегда легче решить, если вы пройдете от финиша к началу. То же самое и с TDD. Без Test Driven вы постоянно думаете: «Что мне делать дальше?». С Test Driven тест скажет вам, что делать дальше (он ломается, если нет логики, поэтому вам просто нужно исправить сломанную часть). Кроме того, у вас будет меньше ошибок, что в конечном итоге сэкономит вам много времени. Могу ли я получить все, просто играя с этим и читать онлайн учебники? Если мне нужно прочитать книгу, какая книга?
Тебе не нужна книга. Самый эффективный способ чему-либо научиться: просто сделай это. Вернитесь к книге или онлайн-ресурсам, если столкнетесь с вопросом или проблемой. Это тоже гибко.
В вашем примере вещи, которые требуют тестирования, следующие: Контакт может быть связан с 1 компанией, Компания может иметь несколько контактов, создавать способы создания контактов и связывать контакты с компаниями.
class CompanyTest <Test::Unit
def test_relationship # test associations/relationships
c = companies(:some_company)
assert_equal [a list of contacts], c.contacts # make sure a company can have multiple contacts
end
end
class ContactTest<Test::Unit
def test_relationships
c = contact(:some_contact)
assert_equal some_company, c.company # make sure the contact link to 1 company
end
def test_create/add
# test create contacts, here you need to make sure the contact is created correctly, and linked to company correctly
end
end
Я рекомендую эту книгу: Agile Web Development with Rails
Я использую:
TDD в первую очередь предназначен для написания тестов. Это в основном вынуждает вас написать собственный клиент, прежде чем писать код приложения. Цикл обычно состоит в том, чтобы написать тест для несуществующего API, запустить тест, ожидая, что он завершится ошибкой, написать свой код API, снова запустить тест и убедиться, что он прошел. Затем напишите свой следующий тест ... и так далее.
Какой гем / плагин мне следует использовать?
Мне всегда нравился shoulda .
Сколько времени на самом деле требует TDD?
Причина, по которой я всегда отдавал предпочтение разработке TDD, заключается в том, что она фокусируется на том, как я буду реализовывать конкретный фрагмент кода. У меня есть анекдотическое ощущение, что, когда я более строго придерживаюсь принципов TDD, я трачу меньше времени на доработку позже. Однако количество потраченного времени зависит от того, насколько хорошо вы пишете модульные тесты. Если модульные тесты не отражают ожидаемого поведения, все время, потраченное на них, будет потрачено зря.