Xtext:测试空白语言 - JUnit 中缺少 RULE_BEGIN

Xtext: Testing whitespace language - missing RULE_BEGIN in JUnit

我有这种花哨的白色 space 语言,我正在训练以测试它。现在语法很简单(基于终端)

Model:
  {Model}
BEGIN
    package=PackageDeclaration?
    class=ClassDeclaration?
END
methods+=MethodDeclaration*
;

PackageDeclaration: 'package' name=ID;
ClassDeclaration: 'class' name=ID;
MethodDeclaration: 'def' name=ID;

terminal BEGIN:
    'synthetic:BEGIN';

terminal END:
    'synthetic:END';

现在说到 JUnit:

@Test
def void packageSimpleNoErrors() {
    val result = '''

        package testPack
        '''.parse
    // Parsed without errors
    result.assertNoErrors
}

多行字符串是 2x 新行、制表符、'package testPack' 和新行。 在解析方法中使用调试进行了检查。

如果我在 Eclipse 编辑器中这样放置它就完全没问题,没有问题。但是我无法让 JUnit 通过这个测试:

java.lang.AssertionError: Expected no errors, 
but got :ERROR (org.eclipse.xtext.diagnostics.Diagnostic.Syntax) 
'missing RULE_BEGIN at 'package’’ on PackageDeclaration, 
ERROR (org.eclipse.xtext.diagnostics.Diagnostic.Syntax) 
'mismatched input '<EOF>' expecting RULE_END' on Model

目前这还不是个问题,因为此代码的其余测试看起来不错,但我更喜欢将它们全部设为绿色 :)

谢谢

问题是 rich stings 空行故意丢失。也许你应该从文件中读取模型或尝试一些东西

'''
«"\n"»
    package testPack
'''.parse