次の問題にどう対処しますか?異なる言語で表示されているAPIのテストの等価性
トークン(単純なXMLファイル)を検証するAPIがあります。つまり、APIはvalidateTime(String tokenPath)
,validateFileHash(String tokenPath)
またはvalidateSomthingElse(String tokenPath)
のような一連の検証メソッドを指定しています。
APIはすでに2つの異なる言語で実装されています。 JavaとCです。私の仕事は、両方のバージョンが同じを振る舞うことを確認することです。したがって、validateTime("expiredToken.xml")
を呼び出した後にJavaがTokenExpiredException
をスローした場合、Cは対応するエラー値を返します(この場合、TOKEN_EXPIREDの場合は-4
があらかじめ定義されています)。
良い古いアプローチは、両方の言語でUnit/Integration-testsを書くことです。しかし、これは基本的に同じテストをJavaとCで実装する必要があるため、2倍の労力が必要です。
私の考えは、TestCases用のXMLスキーマを定義することでした。
<!-- TestCases.xml -->
<testcase>
<tokenpath>expiredToken.xml</tokenpath>
<apiMethod>validateTime</apiMethod>
<expectationJava>TokenExpiredException</expectationJava>
<expectationC>-4</expectationC>
</testcase>
<testcase>
...
</testcase>
さらに私はTestCases.xmlを解析し、直接プリセット期待する結果と一致する(CのためのJNIを使用して)両方のAPIのバージョンを起動する小さなJavaツールを構築することになります。
これは実行可能な計画だと思いますか、これまでのアプローチを実行する方が良いですか?この種のタスクに対処するためのフレームワークはありますか、それとも始めるのが嫌な考えですか?
ありがとうございます。
P.S.申し訳ありません私の英語のために: