|
|
|
Re: org.junit.ComparisonFailure when unittesting my language [message #998144 is a reply to message #997302] |
Wed, 09 January 2013 12:42 |
|
If I remember correctly (I stopped using AbstractXtextTests and switched
to the 'new way' of writing Junit tests with Xtend) you can disable the
tests for the serializer (I had similar problems, and I don't remember
whether it was a bug) by redefining a method of AbstractXtextTests
On 01/05/2013 11:39 AM, Damien Martin-Guillerez wrote:
> Hello when unit testing my language I got into a weird error. When
> trying to isolate it I ends up with the same error for this language:
>
> grammar org.xtext.example.mydsl.MyDsl with
> org.eclipse.xtext.common.Terminals
>
> generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"
>
> Model: (typeImports+=IHT | typeDefines+=ED )*;
>
> IHT returns ST:
> {IHT} 'imp' name=ID ';'
> ;
>
> ED returns ST:
> {ED} 'enum' name=ID ';'
> ;
>
>
> The error is:
>
> org.junit.ComparisonFailure: expected:<[enum Y; imp X];> but was:<[imp
> X;enum Y];>
> at org.junit.Assert.assertEquals(Assert.java:123)
> at org.junit.Assert.assertEquals(Assert.java:145)
> at
> org.eclipse.xtext.junit4.serializer.SerializerTester.assertSerializeWithNodeModel(SerializerTester.java:96)
>
> at
> org.eclipse.xtext.junit4.AbstractXtextTests.getResourceAndExpect(AbstractXtextTests.java:271)
>
> at
> org.eclipse.xtext.junit4.AbstractXtextTests.getResource(AbstractXtextTests.java:244)
>
> at
> org.eclipse.xtext.junit4.AbstractXtextTests.getResource(AbstractXtextTests.java:219)
>
> at
> org.eclipse.xtext.junit4.AbstractXtextTests.getModel(AbstractXtextTests.java:190)
>
> at
> org.eclipse.xtext.junit4.AbstractXtextTests.getModel(AbstractXtextTests.java:186)
>
> at
> org.xtext.example.mydsl.tests.TestXTextBug.test(TestXTextBug.java:15)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
>
> at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>
> at
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
>
> at
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
>
> at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
>
> at
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
> at
> org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
>
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
>
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
>
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> at
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>
> at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
>
>
>
> And the tester is:
>
> package org.xtext.example.mydsl.tests;
>
> import org.eclipse.xtext.junit4.AbstractXtextTests;
> import org.eclipse.xtext.junit4.InjectWith;
> import org.junit.Test;
> import org.xtext.example.mydsl.MyDslInjectorProvider;
> import org.xtext.example.mydsl.MyDslStandaloneSetup;
>
> @InjectWith(MyDslInjectorProvider.class)
> public class TestXTextBug extends AbstractXtextTests {
>
> @Test
> public void test() throws Exception {
> with(MyDslStandaloneSetup.class);
> getModel("enum Y; imp X;");
> }
>
> }
>
>
> If we remove both ';' in the grammar it works, if we remove only the one
> in 'enum' it still fails, if we remove the "returns ST" type conversion
> it still fails. My Xtext version is 2.3.1.v201208210947.
>
> Did I missed something?
--
Lorenzo Bettini, PhD in Computer Science, DI, Univ. Torino
ICQ# lbetto, 16080134 (GNU/Linux User # 158233)
HOME: http://www.lorenzobettini.it MUSIC: http://www.purplesucker.com
http://www.myspace.com/supertrouperabba
BLOGS: http://tronprog.blogspot.com http://longlivemusic.blogspot.com
http://www.gnu.org/software/src-highlite
http://www.gnu.org/software/gengetopt
http://www.gnu.org/software/gengen http://doublecpp.sourceforge.net
HOME: http://www.lorenzobettini.it
TDD Book: https://leanpub.com/tdd-buildautomation-ci
Xtext Book: https://www.packtpub.com/application-development/implementing-domain-specific-languages-xtext-and-xtend-second-edition
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.02707 seconds