要比較JUnit測試中的多行文本結果,我經常需要從文本表示 轉換爲Java代碼,該代碼使用多行文本初始化字符串。用於Junit測試的換行字符串
E.g.如果測試應該檢查包含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代碼中的字符串文字重新創建輸入文件的等效項。
那你有以上不工作的兩種解決方案?目前還不清楚問題是什麼,你能否澄清? –
我正在尋找一種將多行文本轉換爲代碼的工具,以便我不必一次又一次地手動執行此操作。 –
如果您有一個字符串對象作爲輸入,您只需將其寫入文件(不需要轉義)。而且,如果您閱讀帶有引號或其他特殊字符的文件,則不需要「轉義」。只有在Java代碼中輸入字符串文字時,才需要使用轉義字符作爲String xyz =「sfdsf」,而不是在使用String實例時。 –