Csvパーサーの単体テストにはどのテストを使用すればよいですか?
C#に simple csv parser があり、すべての一般的な(一般的ではない)Edgeケースのユニットテストが適切にカバーされていることを確認します。潜在的な問題と境界ケースを特定するには、どのテストを使用すればよいですか?
私はちょうど見つけました https://github.com/maxogden/csv-spectrum :
CSV解析ライブラリの酸テストとして機能するさまざまなCSVファイルの束。検証用のJSONバージョンのCSVもあります。
このリポジトリの目的は、CSVスペクトル全体を表すテストケースをキャプチャすることです。
ここでは、検討してテストケースを用意する必要があるいくつかの境界ケースを示します。
,foo,
,"foo",
,"foo\nbar"
,"foo,bar"
,"foo""bar"
,,
はnullである必要があり、,"",
は空の文字列を与える必要があります。CSVファイルの正式な仕様はありません。ただし、ほとんどの実装が従うと思われる形式を文書化した RFC 4180-CSVファイルの一般的な形式とMIMEタイプ (特にセクション2)をご覧ください。
特に、セクション2のリストからいくつかのテストケースの生成を開始するのはかなり簡単です。
各レコードは、改行(CRLF)で区切られた別々の行にあります。例えば:
aaa、bbb、ccc CRLF zzz、yyy、xxx CRLF
ファイルの最後のレコードには、終了の改行がある場合とない場合があります。例えば:
aaa、bbb、ccc CRLF zzz、yyy、xxx
通常のレコード行と同じ形式のファイルの最初の行として現れるオプションのヘッダー行があるかもしれません。このヘッダーには、ファイル内のフィールドに対応する名前が含まれ、ファイルの残りのレコードと同じ数のフィールドが含まれている必要があります(ヘッダー行の有無は、このオプションの「header」パラメーターで示す必要がありますMIMEタイプ)。例えば:
field_name、field_name、field_name CRLF aaa、bbb、ccc CRLF zzz、yyy、xxx CRLF
ヘッダーと各レコード内には、カンマで区切られた1つ以上のフィールドがあります。各行には、ファイル全体で同じ数のフィールドが含まれている必要があります。スペースはフィールドの一部と見なされるため、無視しないでください。レコードの最後のフィールドの後にコンマを続けてはなりません。例えば:
aaa、bbb、ccc
各フィールドは二重引用符で囲まれている場合と囲まれていない場合があります(ただし、Microsoft Excelなどの一部のプログラムでは二重引用符がまったく使用されていません)。フィールドが二重引用符で囲まれていない場合、フィールド内に二重引用符が表示されないことがあります。例えば:
「aaa」、「bbb」、「ccc」CRLF zzz、yyy、xxx
改行(CRLF)、二重引用符、およびコンマを含むフィールドは、二重引用符で囲む必要があります。例えば:
「aaa」、「b CRLF bb」、「ccc」CRLF zzz、yyy、xxx
フィールドを囲むために二重引用符を使用する場合、フィールド内に表示される二重引用符は、その前に別の二重引用符を付けることでエスケープする必要があります。例えば:
「aaa」、「b」、「bb」、「ccc」
私はしばらくそれに取り組んでいます。それは確かに良いテストになるには奇妙なことであり、それはたくさんあります。
このディレクトリを確認し、*。tファイルのコードを確認してください。
http://cpansearch.Perl.org/src/MAKAMAKA/Text-CSV-1.32/t/
(バージョン番号-1.32は最終的に変更される可能性があるため、リンクが「デッド」になる可能性があります。試行錯誤してバージョン番号を自分で増やすか、親ディレクトリに移動するか、ここをクリックしてください
https://metacpan.org/pod/Text::CSV
「参照」をクリックして最新バージョンのソースコードに移動します)
Text :: CSV_XSは、csvファイルを解析するための成熟したPerlモジュールです。 * .tファイルはPerl 5で記述されており、モジュールのセルフテスト用の多くのテストケースが含まれています。これらは、モジュールのインストール時に実行されます。