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

时间:2016-09-11 10:33:23

标签: junit whitespace xtext xtend

我有这种奇特的空白语言,我正在测试它。现在语法很简单(基于终端)

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'和新线。 在解析方法中使用debug进行检查。

如果我在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

目前它并不是一个显示stoper,因为此代码的其余测试看起来很好,但我更喜欢将它们全部变为绿色:)

由于

1 个答案:

答案 0 :(得分:0)

问题在于,富有刺痛的空行会因意图而丢失。也许你应该从文件中读取模型或尝试一些东西

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