我想为我的编译器编写一些测试,但无法通过错误。
我正在学习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/