0

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

2 に答える 2

3

ParserHelper とメソッドを使用して解決:

parse.assertNoError
于 2012-12-05T16:57:18.443 に答える
0

このテストを追加して、名前が正しく解析されていることを確認してください。

@Test
def void example() throws Exception{
   Entity entity = parserHelper.parse("ENTITY John END_ENTITY");
   assertEquals(entity.getName(), "John");
}
于 2012-11-29T13:31:02.337 に答える