我是Xtend和单元测试世界的新手。 我正在测试我的语法,我想编写一个测试验证它的测试。
这是一个简单的例子:
MyGrammar:
Domainmodel: entities+=Entity* ;
Entity:
'ENTITY' name=ID 'END_ENTITY';
现在假设我也插入了此验证规则:
@Check
public void checkNoJack(Entity e){
if (e.getName().equals("Jack")){
error("This name is not valid.",null);
}
}
所以,如果我试着写:
ENTITY Jack END_ENTITY
我会收到错误。
但是,如果我尝试这个Xtend测试:
@Test
def void example() throws Exception{
parserHelper.parse("ENTITY Jack END_ENTITY")
}
一切都会正确。
如何在测试中考虑验证规则?
更新:名称解析正确:
@Test
def void example() throws Exception{
val model = parserHelper.parse("ENTITY John END_ENTITY");
val entity=model.entities.get(0);
assertEquals(entity.name, "John");
}
@Test
def void example2() throws Exception{
val model = parserHelper.parse("ENTITY Jack END_ENTITY");
val entity=model.entities.get(0);
assertEquals(entity.name, "Jack");
}
答案 0 :(得分:3)
使用ParserHelper和方法解决:
parse.assertNoError
答案 1 :(得分:0)
尝试添加此测试以确保正确解析名称:
@Test
def void example() throws Exception{
Entity entity = parserHelper.parse("ENTITY John END_ENTITY");
assertEquals(entity.getName(), "John");
}