我想为我的编译器编写一些测试但不能通过错误。
我正在关注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''')
}
}
提前谢谢!
答案 0 :(得分:1)
xtext的人标记可能被改变的东西而不是api。这就是你得到这个警告的原因。 无论如何它应该工作。 (虽然它仅用于xbase语言)
P.S:您还必须为jdt.core添加依赖