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
我有这种花哨的白色 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