我想为我的编译器编写一些测试,但无法通过错误。

我正在学习L. Bettini的“用Xtext和Xtend实现DSL”(一个很棒的书)的例子。我已经从https://github.com/LorenzoBettini/packtpub-xtext-book-examples下载了'entities'DSL的代码,并且EntitiesGenerator.xtend中的测试效果很好。

如果我使用相同的代码为默认DSL(MyDsl)编写测试,则会出现错误:


org.eclipse.xtext.xbase.compiler.CompilationTestHelper cannot be resolved to a type


或者,如果我将org.eclipse.xtext.xbase.junit (2.4.1)添加到所需插件列表中,则会得到


Discouraged access: The type CompilationTestHelper is not accessible due to restriction on required project org.xtext.example.myDsl.tests


我可以允许访问它,但是无论如何都会出现运行时错误。如果我也尝试添加org.eclipse.xtext.xbase.lib,则列表中仅出现org.eclipse.xtext.xbase.lib.source。我不知道这很重要。无论如何,添加它不会改变任何东西。

我需要做些什么才能使其正常工作?

我正在将Juno与Xtext 2.4.1。,Java 1.7一起使用。

测试类的内容:

package org.xtext.example.myDsl.tests

import com.google.inject.Inject
import org.eclipse.xtext.junit4.InjectWith
import org.eclipse.xtext.junit4.XtextRunner
import org.eclipse.xtext.xbase.compiler.CompilationTestHelper // error here
import org.xtext.example.myDsl.MyDslInjectorProvider
import org.junit.Test
import org.junit.runner.RunWith

@RunWith(typeof(XtextRunner))
@InjectWith(typeof(MyDslInjectorProvider))
class MyDslGeneratorTest {

    @Inject extension CompilationTestHelper

    @Test
    def void testGeneratedCode() {
        '''
    Hello some1!
    Hello some2!
        '''.assertCompilesTo(
        '''some content''')
    }
}


先感谢您!

最佳答案

xtext家伙标记的东西可能不会更改为api。这就是为什么您会收到此警告。
无论如何它应该工作。 (尽管它仅用于xbase语言)

P.S:您还必须向jdt.core添加依赖项

关于java - 找不到CompilationTestHelper或不鼓励其访问,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21330803/

10-11 20:39