【问题标题】:Xtext: combine tests and validationXtext:结合测试和验证
【发布时间】:2012-11-29 12:03:31
【问题描述】:

我是 Xtend 和单元测试领域的新手。 我正在测试我的语法,我想写一个测试来测试它的有效性。

这里是一个简单的例子:

我的语法:

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");
    }

【问题讨论】:

    标签: eclipse unit-testing validation xtext rule


    【解决方案1】:

    使用 ParserHelper 和方法解决:

    parse.assertNoError
    

    【讨论】:

      【解决方案2】:

      尝试添加此测试以确保正确解析名称:

      @Test
      def void example() throws Exception{
         Entity entity = parserHelper.parse("ENTITY John END_ENTITY");
         assertEquals(entity.getName(), "John");
      }
      

      【讨论】:

      • 是的,名称已正确解析(请参阅第一篇文章的更新)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多