Предполагая, что строка с ошибкой действительно:
binary(i) = num2str(r(i));
Затем, при вызове функции с аргументом 25.10, до достижения этой строки имеем:
i=1
r=1.10000
num2str(r(i)) = '1.1'
Вот почему атрибуция
binary(i) = num2str(r(i));
Не работает. В Matlab двоичный код (1) представляет собой массив символов 1x1. Вы пытаетесь вписать в него массив символов 1x3 ('1.1').
Позволяет предполагают, что я кодирую названный класс Oven
испечь мое восхитительное Pie
объекты. Это - то, как я ступаю через порядок модульного теста:
Oven oven = new Oven();
Никакой тест для этого, я предполагаю.oven.turnOn(int degrees)
хорошие звуки, я сделаю это. Как я проверяю его? Лучше сделайте oven.getTemperature()
. Существует очевидный тест.Pie
. Для этого мне нужно oven.bake(Pie p)
таким образом, я сделаю это. Но теперь что? Я хочу проверить, готов ли круг, а скорее, чем наличие oven.isPieReady()
Я думаю это oven.pastryStatus()
который возвращает вещи как "ничто в духовке", "сырые данные", "почти сделанный", "приготовленные" и "обугленные" хорошие звуки и в целом должны быть более растяжимыми, чем oven.isPieReady()
таким образом, я сделаю это.И т. д. и т. п. Так, я сделаю свои тесты в порядке, я ожидаю использовать объект, совершенствовавший спецификацию, когда я иду. В конце я обычно заканчиваю с довольно простым все же мощным API, который делает то, что я хочу. После того, как у меня есть единица, протестировал мой API, я выполняю покрытие на своем коде для наблюдения то, что я пропустил, и затем добавьте дополнительные тесты для тех.
Когда сталкивающийся со списком тестов для реализации у Вас будут категории
В таком сценарии, Выбор один от блока Category2, потому что это предоставит макс. знание/изучение на единицу инвестированного времени. Плюс он получит Вас прокрутка и повысит уверенность, чтобы расти к более трудным тестам Category3.
Я думаю, что получил это от TDD Примером - Kent Beck. Взгляните в случае, если у Вас есть время..Рекомендуется.
Я создал бы ряд единиц для большей части independent/lowest-level функциональности. После того как у Вас есть те классы, проходя каждый тест, можно идти дальше, предполагая, что они будут работать при вызове более зависимой функциональностью.
Я преподавал внутренний класс TDD некоторое время теперь, и много участников начинается путем тестирования всех ошибочных случаев. Релевантный, как они могут быть, который не является лучшим способом запустить imo.
Запустите путем установки тестов, которые легко реализовать и все еще сказать Вам, если Вы перемещаетесь в правильное направление в отношении функций, Вы пытаетесь реализовать. Таким образом, если Вы создаете стек, удостоверяются, что Вы проверяете нажатие и поп прежде, чем протестировать ошибочные случаи.
Помните, что цель теста не только, чтобы проверить поведение, но также и позволить Вам использовать интерфейс типа под тестом. Если запись тестов чувствует неправильно, вероятно, необходимо изменить интерфейс.
Хорошая идея состоит в том, чтобы сделать каждый тестовый сценарий назад. Поэтому запустите путем записи Оператора контроля. Это - цель проверки для этого теста. Затем добавьте, что любые шаги необходимы, чтобы перейти к сути дела, где можно сделать то, что делает Утверждение.
Это универсальные инструкции, которые я нахожу полезными для приоритизации поблочного тестирования:
1) Определите Граничные Объекты (Победа/Веб-формы, CustomControls и т.д.).
2) Определите Объекты управления (Бизнес-расположенные на слое объекты)
3) Запишите Модульные тесты только на открытые методы объектов управления, вызванные граничными объектами. Таким образом, Вы будете уверены, что покрываете основные функциональные аспекты своего приложения.
Можно использовать эти правила расположить по приоритетам поблочное тестирование - затем, если необходимо микропротестировать другой материал, можно также сделать это в зависимости от потребностей.