2017-08-04 3 views
0

私は三つのクラスを持っています。ユニットテストでxml結果を検証しますか? ConvertToXMLElement、ConvertToClass、SerialisableClass</p> <p>ConvertToXMLElementは、ConvertToClassがのXmlElementを取り込んでSerialisableClassを返す機能を有するSerialisableClassのインスタンスを取り込み、クラス値を表すのXmlElementを返す機能を有する -

ConvertToXMLElementから返されたXmlElementを検証し、XmlElementがConvertToClassによって正しいクラスに変換できることを確認するユニットテストを作成しようとしています。

今私がそれを行うと想像できる唯一の方法は、ConvertToClassでXmlElementをクラスに変換しようとすることです。

これは、単体テストでは2つのクラスの間に依存関係があることを意味します。単体テストでは、このクラス関数の検証時に他のクラスを気にする必要はありません。

+0

必要な結果を返すには、依存関係のあるクラスを偽造する必要があります。そうすれば、実際にConvertToClassでコードを実行することなく "XmlElement"クラスをテストできます –

+0

生成するXMLファイルをどのアプリケーションが使用するのですか?消費するアプリケーションが使用するスラーパーパーサーを使用してテストを書くことができれば理想的です。別のオプションは、固定データをシリアル化し、その結果を固定された既知の良質のXMLファイルと比較することです。明らかにより多くのメンテナンスが必要です...最後に、クラスを直列化してデシリアライズするのを恐れないでください。それは良いアイデアです..あなたがその対称的なテストを取り戻すための他のテストを持っている限り。 –

答えて

0

コードを分離する必要があります。あなたのコードは常に依存関係を持っているので、私たちがユニットテストをしているときにコードを分離する仕事をしています。あなたにそれをする方法を理解するのに役立つリンクをいくつかリンクさせてください。

https://msdn.microsoft.com/en-us/library/hh549174.aspx http://www.c-sharpcorner.com/UploadFile/dacca2/understand-stub-mock-and-fake-in-unit-testing/

1

単離は、ユニットテストにおいて標準であるが、一緒にシリアライズ/デシリアライズをテストするIMO、全く受け入れられないではありません。

誰がシリアル化されたデータを使用するかによって異なります。あなたの2つのクラスでのみ使用されている場合は、それらを一緒にテストするための比較的安全なショートカットです。

OTOHの場合、データを他のプログラムで使用できるように特別な形式にする必要がある場合は、絶対に2つの段階を別々にテストする必要があります。つまり、シリアライズされたXMLを調べて、それが外部要件を満たしているかどうかを判断し、同じ標準を満たすテストで使用するXMLを作成します。

もちろん、厳密には必要でない場合でも2つを分けることはできますが、それは通常もっと大変です。

関連する問題