我正在使用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