Мы проверяем наш код, чтобы сделать его более правильным (на самом деле, менее вероятно, что он будет неправильным ). Тем не менее, тесты также являются кодом - они также могут содержать ошибки. И если ваши тесты содержат ошибки, они вряд ли улучшат ваш код.
Я могу думать о трех возможных типах ошибок в тестах:
Логические ошибки, когда программист неправильно понял поставленную задачу, и тесты делают то, что, как он думал, должны делать, что неправильно;
Ошибки в базовой структуре тестирования (например, утечка насмешливой абстракции);
Ошибки в тестах: тест немного отличается от того, что думает программист.
Ошибки типа (1), кажется, невозможно предотвратить (если программист просто ... не станет умнее). Тем не менее, (2) и (3) могут быть гибкими. Как вы справляетесь с этими типами ошибок? Есть ли у вас какие-то особые стратегии, чтобы их избежать? Например, вы пишете какие-то специальные «пустые» тесты, которые проверяют только предположения автора теста? Кроме того, как вы подходите к отладке неработающего контрольного примера?