Итак, этот вопрос все начался, когда я начал выполнять модульное тестирование для простой 2 строки postNotification
и addObserver
. Из этого аналогичного вопроса here вы можете увидеть, что для его проверки вам нужно добавить ~ 20 строк & часть от общего способа написания кода.Как написать тестируемый код в Swift
Перед тем как справиться с этой проблемой, я впервые понял разницу между Unit Testing и TDD. Тестирование модулей легко, если ваш код можно проверить, т. Е. Если вы следите за мышлением TDD. Затем меня привели к тому, как я могу написать тестовый код, который я не нашел много рекомендаций, и каждый учебник просто перескакивает на единичный тест. Apple принадлежит documentation.
Моя первоначальная мысль заключалась в том, что мне нужно стремиться к «функциональному программированию» и писать свои функции в способе pure function. Но опять же это очень трудоемко и может потребовать много рефакторинга в существующих кодах или даже для новых проектов много добавленных линий, и я даже не уверен, что that is the correct approach. Существуют ли какие-либо предлагаемые рекомендации или стандарты для написания тестового кода в простой форме?
Я уже знаю: Я знаю, что вы не должны писать какой-либо код, если нет теста для его отказа, поэтому в основном мне нужно сначала написать тест, и как только я получу ошибку, даже ошибка компилятора, тогда мне пришлось бы вернуться к фактическому тестируемому классу, напишите все необходимое и сделайте мой тестовый код, чтобы не дать никаких ошибок, затем вернитесь к тестовому классу и продолжайте писать мой тест и исправлять ошибки компиляции до завершения. Затем запустите тест и проверьте, проверяет ли он его, что я хочу проверить.
Для всех тестов я должен убедиться, что мои тесты пройдут и не будут точно совпадать с тем, где я ожидаю сбой, т. Е. Тест пройдет, когда ожидается, что он потерпит неудачу.
Что я не знаю, так как я могу сгладить процесс более простым способом.
Я не прошу, чтобы написать тестовый код для NSNotificationCenter, я прошу дать общие рекомендации по написанию проверяемого кода.
Мне нужно будет пройти через ссылки. Это займет некоторое время. Можете ли вы привести пример плохого кода для тестирования и другого теста на хороший код, а также указать, что нам нужно делать глупо? – Honey
Я бы предложил прочитать мой ответ более подробно, чтобы понять, почему я не представляю вам плохой и хороший пример (я дам вам подсказку, вы упростите проблему) :-) Итак, я предлагаю вам сделать фоновое чтение - нет способа обмануть навык и опыт по этому вопросу. – mz2
В вашей первой ссылке для solid отсутствует ')' в конце. Я прочитал ссылки и верю, что вы направляете меня на путь записи. Можете ли вы точно определить, что вам нужно сделать для адресной единицы тестирования PostNotification, AddObserver. Не ссылайтесь на какие-либо ссылки? Я уже включил ссылку в мой вопрос, обращаясь к моей проблеме. PS Я думаю, что ссылка на шаблон Swift Design заставила бы меня заняться довольно долгое время – Honey