未找到CompilationTestHelper或不鼓励其访问

时间:2014-01-24 10:54:38

标签: java eclipse xtext

我想为我的编译器编写一些测试但不能通过错误。

我正在关注L. Bettini的“使用Xtext和Xtend实现DSL ”的例子(很棒的书btw)。我已经从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''')
    }
}

提前谢谢!

1 个答案:

答案 0 :(得分:1)

xtext的人标记可能被改变的东西而不是api。这就是你得到这个警告的原因。 无论如何它应该工作。 (虽然它仅用于xbase语言)

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