как бы вы решили следующую проблему?
У меня есть API, который проверяет токены (которые являются простыми файлами XML).Таким образом, API определяет множество методов проверки, таких как validateTime(String tokenPath)
, validateFileHash(String tokenPath)
или validateSomthingElse(String tokenPath)
.
API уже реализован на двух разных языках.Java и C. Моя задача - убедиться, что обе версии ведут себя одинаково .Поэтому, если Java выдает TokenExpiredException
после вызова validateTime("expiredToken.xml")
, C должен вернуть соответствующее значение ошибки (в этом случае предопределенное значение -4
для TOKEN_EXPIRED).
Старый добрый подход заключается в написании модульных / интеграционных тестов на обоих языках.Однако это потребовало бы вдвое больше усилий, поскольку мне пришлось бы реализовать по существу одинаковые тесты в Java и в C.
Моя идея состояла в том, чтобы определить XML-схему для TestCases, которая бы выглядела примерно так:
<!-- TestCases.xml -->
<testcase>
<tokenpath>expiredToken.xml</tokenpath>
<apiMethod>validateTime</apiMethod>
<expectationJava>TokenExpiredException</expectationJava>
<expectationC>-4</expectationC>
</testcase>
<testcase>
...
</testcase>
Более того, я бы создал небольшой Java-инструмент для анализа TestCases.xml и прямого вызова обеих версий API (используя JNI для C), чтобы сопоставить результат с предустановленными ожиданиями.
Как вы думаете,это выполнимый план, или лучше использовать старый подход?Есть ли фреймворки для решения подобных задач или это вонючая идея для начала?
Заранее спасибо
PS Извините за мой английский:)