JUnit フレームワークを使用して、Java のプログラミング言語からインタープリターのテストを作成しています。この目的のために、テスト中の言語のコード スニペットを含む多数のテスト ケースを作成しました。これらのスニペットは通常小さいため、Java コードに埋め込むと便利です。ただし、Java は複数行の文字列リテラルをサポートしていないため、エスケープ シーケンスと長い文字列リテラルを分割する必要があるため、コード スニペットが少しわかりにくくなります。次に例を示します。
String output = run("let a := 21;\n" +
"let b := 21;\n" +
"print a + b;");
assertEquals(output, "42");
理想的には、次のようなものが欲しいです:
String output = run("""
let a := 21;
let b := 21;
print a + b;
""");
assertEquals(output, "42");
考えられる解決策の 1 つは、コード スニペットを外部ファイルに移動し、対応するテスト ケースから各ファイルを参照することです。ただし、これによりメンテナンスの負担が大きくなります。
もう 1 つの解決策は、複数行の文字列リテラルをサポートする Scala や Jython などの別の JVM 言語を使用してテストを作成することです。これにより、プロジェクトに新しい依存関係が追加され、既存のテストを移植する必要があります。
メンテナンスをあまり追加せずに、テスト コード スニペットの明瞭さを維持する他の方法はありますか?