TDD подход к проблеме с тестом - PullRequest
0 голосов
/ 01 апреля 2020

Я новичок в TDD практике, и мне было интересно, хорош ли мой подход из особого случая.

Я хочу запрограммировать небольшое программное обеспечение, которое принимает группу строк массива в параметре и разделяет вся строка в этой группе.

Пример:

{"C - 3 - 3", "M - 5 - 5"} должно вернуть {{"C", " 3 "," 3 "}, {" M "," 5 "," 5 "}}

Избавившись от проблемы, я начал с StringSplitter и StringSplitterTest с TDD, чтобы разделить только одна строка в массив строк.

После этого я запрограммировал StringGroupSplitter и StringGroupSplitterTest (всегда с подходом TDD), делая то же самое, но с массивом строк (зная, что StringGroupSplitter имеет зависимость StringSplitter) .

Итак, я вспомнил «ПЕРВЫЕ» принципы модульных тестов и, в частности, принцип независимости, согласно которому тест не должен зависеть от результата другого теста.

В моем случае, проблема в том, что из-за зависимости StringGroupSplitter и StringSplitter, если в StringSplitterTest не выполняется только один тест, тесты в StringGroupSplitterTest также не пройдут.

Поэтому мой вопрос заключается в следующем: правильный ли мой подход к TDD?

Спасибо заранее.

1 Ответ

1 голос
/ 02 апреля 2020

Я вспомнил «ПЕРВЫЕ» принципы модульных тестов и, в частности, принцип независимости, согласно которому тест не должен зависеть от результата другого теста.

Важная идея заключается в том, что что тесты должны давать точные измерения независимо от порядка их проведения. Если у нас есть «синий» тест и «оранжевый» тест, то мы сможем выполнить либо один тест, либо оба теста в любом порядке и получить точную информацию о том, соответствует ли наша реализация нашей спецификации.

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

Ваше описание разделителей строк не предполагает, что у вас возникла проблема , Если StringGroupSplitter зависит от части StringSplitter, и вы вводите ошибку в этой части, то несколько неудачных тестов - это нормально. Это не та вещь, которую мы имеем в виду, когда беспокоимся об анти-паттерне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...