【发布时间】:2011-12-03 20:29:39
【问题描述】:
我正在使用 JUnit 框架从 Java 中的某种编程语言为解释器编写测试。为此,我创建了大量的测试用例,其中大多数包含测试语言中的代码 sn-ps。由于这些 sn-ps 通常很小,因此可以方便地将它们嵌入 Java 代码中。但是,Java 不支持多行字符串文字,这使得代码 sn-ps 由于转义序列和拆分较长字符串文字的必要性而有点晦涩,例如:
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");
一种可能的解决方案是将代码 sn-ps 移动到外部文件,并从相应的测试用例中引用每个文件。然而,这增加了很大的维护负担。
另一种解决方案是使用不同的 JVM 语言来编写测试,例如支持多行字符串文字的 Scala 或 Jython。这将为项目添加一个新的依赖项,并需要移植现有的测试。
有没有其他方法可以在不增加太多维护的同时保持测试代码sn-ps的清晰?
【问题讨论】:
-
请编辑这个问题,因为它不是关于解释器,而是关于多行字符串。
标签: java testing junit interpreter multilinestring