Я создал небольшой языковой компилятор, используя Xtext. Компилятор генерирует 3 объектных файла (с различными расширениями и содержимым имен файлов) для каждого скомпилированного исходного файла:
class MyGenerator extends AbstractGenerator {
override void doGenerate(Resource resource, IFileSystemAccess2 fsa, IGeneratorContext context) {
val Program prg = resource.allContents.filter(Program).next()
val String code = prg.compile().toString()
fsa.generateFile("out.001", code)
fsa.generateFile("out.002", recompile1(code))
fsa.generateFile("out.002", recompile2(code))
}
...
}
Затем я написал модульные тесты для компилятора:
@ExtendWith(InjectionExtension)
@InjectWith(MyInjectorProvider)
class OptimizerTest {
@Inject extension CompilationTestHelper
@Test
def void test1() {
'''
<My code here>
'''.assertCompilesTo(
'''
<Object code here>
''')
}
}
Когда Я запускаю вышеупомянутый тест, у меня появляется следующая ошибка, предположительно, потому что код не может решить, какой из 3 сгенерированных файлов использовать в качестве входных данных.
org.junit.ComparisonFailure: expected:<<Object Code here>
> but was:<[MULTIPLE FILES WERE GENERATED
File 1 : ....
Есть ли способ каким-либо образом выбрать, какой из 3 сгенерированные файлы, которые будут использоваться в качестве входных данных для теста?