2012-03-13 10 views
1

次の問題にどう対処しますか?異なる言語で表示されている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.申し訳ありません私の英語のために:

答えて

0

既存のdata driven testingフレームワークを利用できるかどうか、あなたのアプローチは実現可能です。このようにして、入力を解析し、テストケースを実行し、出力をアサートするという手間を省くことができます。ここで

はJUnitの+データを含むExcelスプレッドシートを通じてJavaのテストを駆動する方法の例です:http://www.wakaleo.com/component/content/article/241

私はすぐに1を見ていない、うまくいけばあなたはC.

ために同じような何かを見つけることができます
関連する問題