Это сложный и открытый вопрос, который я знаю, но я подумал, что брошу его на пол и посмотрю, есть ли у кого-нибудь интересные предложения.Как я должен тестировать генератор кода?
Я разработал код-генератор, который использует наш интерфейс python для нашего кода на C++ (сгенерированный с помощью SWIG) и генерирует код, который должен быть представлен в виде WebServices. Когда я разработал этот код, я сделал это с помощью TDD, но я обнаружил, что мои тесты были хрупкими, как черт. Поскольку каждый тест по существу хотел проверить, что для заданного бита входного кода (который является заголовком C++) я бы получил заданный бит выводимого кода, я написал небольшой движок, который считывает определения тестов из входных файлов XML и генерирует тест случаев из этих ожиданий.
Проблема заключается в том, что я боюсь входить, чтобы изменить код вообще. Это и тот факт, что сами единицы испытаний являются: сложными, и b: хрупкими.
Так что я пытаюсь думать об альтернативных подходах к этой проблеме, и мне кажется, что я, возможно, занимаюсь этим неправильно. Возможно, мне нужно больше сосредоточиться на результатах, IE: действительно ли код, который я генерирую, запускаю и выполняю то, что я хочу, вместо того, чтобы код выглядел так, как я этого хочу.
У кого-нибудь есть какие-либо впечатления от чего-то подобного, что они хотели бы разделить?
Я действительно сталкиваюсь с этой же проблемой, и ни один из нижеприведенных ответов не является удовлетворительным. Конечно, вы можете тестировать фрагменты генератора кода. Проблема в том, как вы знаете, что сгенерированный код верен, т. Е. Нет регрессий или чего-то подобного, и поэтому как вы пишете автоматические тесты для сгенерированного кода (независимо от того, называются ли они модулями или интеграционными тестами)? – 2009-11-30 15:58:39
@ Джеймс: нет легкого ответа ... Я только что перечитал этот вопрос, и ответы и все проблемы, которые у меня были в то время, наводнили. Я могу дать этот еще один выстрел в ближайшие недели, потому что время от времени я получаю различные регрессии, и все это становится все более и более важным для их обнаружения. – jkp 2009-11-30 21:46:58