После игры с ним в течение очень долгого времени, это то, что я придумал:
jQuery.fn.scrollTo = function (elem) {
var b = $(elem);
this.scrollTop(b.position().top + b.height() - this.height());
};
, и я называю это следующим образом:
$("#basketListGridHolder").scrollTo('tr[data-uid="' + basketID + '"]');
Во-первых, это в порядке и нормально чувствовать себя разбитым, когда Вы сначала начинаете пытаться использовать TDD в своем стиле кодирования. Просто не становитесь нежелательными и выход, необходимо будет дать ему некоторое время. Это - главная парадигма, переключаются на нижний регистр, как мы думаем о решении проблемы в коде. Мне нравится думать о нем как то, когда мы переключились от процедурного до объектно-ориентированного программирования.
, Во-вторых, я чувствую, что разработка через тестирование является прежде всего действием дизайна, которое используется для изложения в деталях дизайна компонента путем создания теста, который сначала описывает API, который это собирается представить и как Вы собираетесь использовать, это - функциональность. Тест поможет сформировать и прессовать Систему Под Тестом, пока Вы не были в состоянии инкапсулировать достаточно функциональности для удовлетворения безотносительно задач, Вы, оказывается, продолжаете работать.
Взятие вышеупомянутый абзац в памяти, давайте посмотрим на Ваши вопросы:
я представил Вас сроку насмешки в ответе для вопроса один. Когда Вы вводите насмешку в свой арсенал для TDD, это существенно делает тестирование легче к краткому обзору далеко части, которые не являются частью системы под тестом. Вот некоторые ресурсы на платформах насмешки, там:
Один способ помочь в использовании TDD, помимо чтения о процессе, должен наблюдать, что люди делают это. Я рекомендую в наблюдении экранных бросков мировым судьей Boodhoo на DNRTV. Проверьте их:
Шаблонов разработки хорошо, они помогут Вам видеть, как термины, которые я представил, используются. Это также представит другой инструмент, названный Resharper и как это может упростить процесс TDD. Я не мог рекомендовать этот инструмент достаточно при выполнении TDD. Кажется, что Вы изучаете процесс, и Вы просто находите некоторые проблемы, которые были уже решены с использованием других инструментов.
я думаю, что сделал бы несправедливость сообществу, если бы я не обновил это путем добавления нового ряда Kent Beck на [1 117] Разработка через тестирование на Прагматически настроенном Программисте .
На основе моего собственного опыта:
Только тестируют Ваш собственный код, не код базовой платформы. Таким образом, при использовании универсального списка тогда нет никакой потребности протестировать, Добавляют, Удаляют и т.д.
существует № 2. Посмотрите там! Обезьяны!!!
NUnit является способом пойти.
Вы определенно не можете протестировать каждый результат. Я тестирую на то, что я ожидаю происходить, и затем тестировать несколько пограничных случаев, где я ожидаю получать исключения или недопустимые ответы. Если ошибка подходит вниз дорожка из-за чего-то, что Вы забыли тестировать, первая вещь, которую необходимо сделать (прежде чем, пытаясь исправить ошибку) запись тест, чтобы доказать, что ошибка существует.
Мое взятие на этом следует:
Я думаю самая важная вещь с (и на самом деле один из больших результатов, несколько рекурсивным способом), TDD является успешным управлением зависимостями. Необходимо удостовериться, что модули тестируются в изоляции без тщательно продуманной необходимой установки. Например, если Вы тестируете компонент, который в конечном счете посылает электронное письмо, сделайте почтового отправителя зависимостью так, чтобы можно было дразнить его в тестах. Это приводит к второй точке - насмешки являются Вашими друзьями. Будьте ознакомлены с насмешкой платформ и стиля тестов, которые они продвигают (поведенческий, в противоположность классическому базирующемуся состоянию), и проектные решения, которые они поощряют ( "Говорят, не спрашивайте" принцип).
Я нашел, что принципы, проиллюстрированные в Три Учетных карточки для легкого Запоминания Сущности TDD, являются хорошим руководством.
Так или иначе, для ответа на вопросы
Серьезно, просто сделайте это, чувак.:)
Я не эксперт в TDD, каким-либо образом, но здесь являюсь моим представлением:
xUnit среды тестирования часто свободны использовать, поэтому если Вы-.Net парень, проверяете NUnit, и если Java является Вашей вещью выезд JUnit.
Вышеупомянутый совет хорош, и если Вы хотите список свободных платформ, необходимо посмотреть не дальше, чем xUnit Список Платформ на Википедию. Надежда это помогает:)
По-моему (Ваш пробег может варьироваться):
1-, Если Вы не записали, это не тестирует его. Если Вы записали его, и у Вас нет теста для него, это не существует.
3-, Как все сказали, xUnit's, свободный и большой.
2 & 4-Решений точно, что протестировать, являются одной из тех вещей, о которых можно дебатировать с собой навсегда. Я пытаюсь провести эту линию с помощью принципов дизайна контракта. Выезд 'Разработка объектно-ориентированного программного обеспечения" или "Прагматически настроенный Программист" для получения дополнительной информации о нем.
Сохраните тесты короткими, "атомарными". Протестируйте самое маленькое предположение в каждом тесте. Сделайте каждый TestMethod независимым для интеграционных тестов, я даже создаю новую базу данных для каждого метода. Если необходимо создать некоторые данные для каждого тестового использования метод "Init". Используйте насмешки для изоляции класса тестирование от, он - зависимости.
я всегда думаю, "каково минимальное количество кода, который я должен записать, чтобы доказать, что это работает на все случаи?"
За прошлый год я стал более убежденным в преимуществах TDD. Вещи, которые я изучил по пути: 1) внедрение зависимости является Вашим другом. Я не говорю об инверсии контейнеров управления и платформ для сборки сменной архитектуры, просто передающие зависимости в конструктора объекта под тестом. Это выплачивает назад огромные дивиденды в тестируемости Вашего кода. 2) я отправился со страстью / фанатизм преобразования и захватил платформу насмешки и приступил к использованию насмешек для всего, что я мог. Это привело к хрупким тестам, которые потребовали большого количества болезненного набора и упадут, как только я запустил любой рефакторинг. Используйте корректный вид теста дважды. Фальшивки, где просто необходимо удостоить чести интерфейс, тупики подавать данные назад к объекту под тестом, насмешка только там, где Вы заботитесь о взаимодействии. 3) Тест должен быть маленьким. Стремитесь к одному утверждению или взаимодействию, протестированному в каждом тесте. Я пытаюсь сделать это, и главным образом я там. Это об устойчивости тестового кода и также о сумме сложности в тесте, когда необходимо пересмотреть его позже.
самая большая проблема, которую я имел с TDD, работала со спецификацией от организации по стандартизации и сторонней реализации того стандарта, который был фактическим стандартом. Я кодировал много действительно хороших модульных тестов к букве спецификации только, чтобы найти, что реализация с другой стороны забора рассматривала стандарт как большее количество консультативного документа. Они играли довольно свободный с ним. Единственный способ зафиксировать это состоял в том, чтобы протестировать с реализацией, а также модульными тестами и осуществить рефакторинг тесты и код по мере необходимости. Настоящей проблемой была вера с моей стороны, что, пока у меня были код и модульные тесты, все было хорошо. Не так. Необходимо создавать эффективные выходные мощности и выполнять функциональное тестирование в то же время, что и Вы - поблочное тестирование. Маленькие части преимущества полностью посредством процесса - в пользователей или руки заинтересованных сторон.
Так же, как дополнение к этому я думал, что скажу, что я поместил сообщение в блоге на моих мыслях о начале работы с тестированием (после этого обсуждения и моего собственного исследования), так как это может быть полезно для людей, просматривающих этот поток.
" TDD †“Начинающий с Разработкой через тестирование " - я имею некоторую большую обратную связь до сих пор и действительно больше ценил бы, что парни необходимо предложить.
я надеюсь, что это помогает!:)