如何解決以下問題?測試以不同語言呈現的API是否相等
我有一個API驗證令牌(這只是簡單的XML文件)。所以API指定了一組驗證方法,如validateTime(String tokenPath)
,validateFileHash(String tokenPath)
或validateSomthingElse(String tokenPath)
。
API已經以兩種不同的語言實現。 Java和C.我的任務是確保兩個版本的行爲相同。因此,如果Java在調用validateTime("expiredToken.xml")
後拋出TokenExpiredException
,則C應該返回相應的錯誤值(在這種情況下,TOKEN_EXPIRED爲預定義的-4
)。
好的舊方法是用這兩種語言編寫單元/集成測試。然而,這需要加倍努力,因爲我必須在Java和C中實施基本相同的測試。我的想法是爲TestCases定義一個XML-Schema,它看起來像這樣。
<!-- 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)相匹配的結果向預設的期待。
您認爲這是一個可行的方案,還是採用舊方法更好?有沒有框架來處理這類任務,或者是一開始就有臭味?
在此先感謝
P.S.對不起,我的英語:)