Я пытаюсь начать модульное тестирование проекта Xtext среднего размера.Как использовать различные инъекции объектов в тестах Xtext, чем в продуктивной среде?
Генератор в настоящее время полагается на некоторые внешние ресурсы, которые я хотел бы издеваться над своим тестом. Таким образом, я добавляю нужный объект через @Inject
в класс Generator.
в псевдокоде например:
class MyGenerator implements IGenerator{
@Inject
ExternalResourceInterface resourceInterface;
...
}
Я создаю фактическое связывание внутри RuntimeModule языков:
class MyRuntimeModule{
...
@Override
public void configure(Binder binder) {
super.configure(binder);
binder.bind(ExternalResourceInterface .class).to(ExternalResourceProductionAcess.class);
}
...
}
Это прекрасно работает в производственной среде.
Однако в тестовом генератор случая, я хотел бы заменить связывание с моими издевались версиями, так что следующий вызов CompilationTestHelper
использует макет:
compiler.assertCompilesTo(dsl, expectedJava);
Вопрос:
Где я могу указать guice/Xtext для привязки инъекции к макету?
Спасибо за ответ. При использовании сгенерированного InjectorProvider загружается мой пользовательский модуль. Однако, поскольку InjectorProvider использует MyRuntimeModule для привязки ExternalResourceProductionAccess, загружается, а не мой макет. Моя попытка написать пользовательский InjectorProvider приводит к тому, что XText не загружает свои вложенные ресурсы. – lwi
Несколько лет назад я настроил InjectorProvider, сгенерированный генератором Xtext в VIATRA. Возможно, вы могли бы взглянуть на это: http://git.eclipse.org/c/viatra/org.eclipse.viatra.git/tree/query/tests/org.eclipse.viatra.query.patternlanguage.emf.tests /src/org/eclipse/viatra/query/patternlanguage/emf/tests/EMFPatternLanguageInjectorProvider.java –