我正在使用JUnit框架爲使用Java的某種編程語言編寫解釋器測試。爲此,我創建了大量測試用例,其中大部分都包含測試語言的代碼片段。由於這些代碼片段通常很小,因此將它們嵌入Java代碼很方便。然而,Java不支持多行字符串文字,這使得代碼片段有點晦澀由於轉義序列和必要性分裂更長的字符串字面量,例如:如何使用JUnit測試解釋器?
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");
一個可能的解決方案是將代碼片段移動到外部文件並引用相應測試用例中的每個文件。但是這增加了很大的維護負擔。
另一種解決方案是使用不同的JVM語言(例如支持多行字符串的Scala或Jython)編寫測試。這將爲項目添加一個新的依賴項,並需要移植現有的測試。
有沒有其他的方式來保持測試代碼片段的清晰度,同時不增加太多的維護?
請編輯這個問題,因爲它不是關於解釋器,而是關於多行字符串。 – rightfold