JUnit テストで複数行テキストの結果を比較するには、テキスト表現から、複数行テキストで文字列を初期化する Java コードに移行する必要があることがよくあります。
たとえば、テストで以下を含む xml 文字列をチェックする必要がある場合:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Customer>
<id>100</id>
<name>John Doe</name>
<orders>
<Order>
<address>100 main street, smalltown, pa</address>
<orderid>1100</orderid>
</Order>
<Order>
<address>5 broadway, ny, ny</address>
<orderid>1200</orderid>
</Order>
</orders>
</Customer>
上記の入力を受け取り、次の結果を得るツール/ジェネレーターを使用したいと思います。
String expected ="";
expected+="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n";
expected+="<Customer>\n";
expected+=" <id>100</id>\n";
expected+=" <name>John Doe</name>\n";
expected+=" <orders>\n";
expected+=" <Order>\n";
expected+=" <address>100 main street, smalltown, pa</address>\n";
expected+=" <orderid>1100</orderid>\n";
expected+=" </Order>\n";
expected+=" <Order>\n";
expected+=" <address>5 broadway, ny, ny</address>\n";
expected+=" <orderid>1200</orderid>\n";
expected+=" </Order>\n";
expected+=" </orders>\n";
expected+="</Customer>\n";
および/または
// Create test file
java.io.PrintWriter srcWriter = new java.io.PrintWriter(new java.io.FileOutputStream(testFile));
srcWriter.println("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n");
srcWriter.println("<Customer>\n");
srcWriter.println(" <id>100</id>\n");
srcWriter.println(" <name>John Doe</name>\n");
srcWriter.println(" <orders>\n");
srcWriter.println(" <Order>\n");
srcWriter.println(" <address>100 main street, smalltown, pa</address>\n");
srcWriter.println(" <orderid>1100</orderid>\n");
srcWriter.println(" </Order>\n");
srcWriter.println(" <Order>\n");
srcWriter.println(" <address>5 broadway, ny, ny</address>\n");
srcWriter.println(" <orderid>1200</orderid>\n");
srcWriter.println(" </Order>\n");
srcWriter.println(" </orders>\n");
srcWriter.println("</Customer>\n");
srcWriter.close();
// PrintWriter never throws Exceptions, one must check the error state manually
//
if (srcWriter.checkError())
{
throw new IOException( "can not write " + testFile );
}
これを達成するための開発ツール/Eclipseユーティリティまたはプラグインは何ですか?
- ファイルから複数行の入力テキストを取得します (IDE またはコマンドラインで)
- エスケープ引用符とバックスラッシュ
- 文字列リテラルを初期化する Java コードに変換するか、追加のファイル リソースを必要とせずに Java コードでファイルを作成します。
- 結果を新しいファイルおよび/またはコンソールに出力するか、コンパイル時に使用するエディターに直接出力します
出力ファイル (存在する場合) は、コンパイル結果と共に出荷されるべきではありません。ファイル モードでは、入力ファイルに相当するものを Java コードの文字列リテラルから再作成する必要があります。