목적 : xtext/xtend 컨텍스트 내에서 매개 변수화 된 테스트를 실행합니다.매개 변수화 된 xtext xtext 러너
진행률 : 지금까지 실행하기에 이르렀지만 junit 창에는 잘못 표시됩니다.
문제점 : 두 테스트의 실패 추적 및 결과는 아래 그림과 같이 마지막 테스트에서 나타납니다. 빨간색 펜으로 표시된 첫 번째 테스트는 일종의 미해결이며 오류 추적을 포함하지 않습니다.
@RunWith(typeof(Parameterized))
@InjectWith(SemanticAdaptationInjectorProvider)
@Parameterized.UseParametersRunnerFactory(XtextParametersRunnerFactory)
class CgCppAutoTest extends AbstractSemanticAdaptationTest {
new (List<File> files)
{
f = files;
}
@Inject extension ParseHelper<SemanticAdaptation>
@Inject extension ValidationTestHelper
@Parameters(name = "{index}")
def static Collection<Object[]> data() {
val files = new ArrayList<List<File>>();
listf("test_input", files);
val test = new ArrayList();
test.add(files.get(0));
return Arrays.asList(test.toArray(), test.toArray());
}
def static void listf(String directoryName, List<List<File>> files) {
...
}
var List<File> f;
@Test def allSemanticAdaptations() {
System.out.println("fail");
assertTrue(false);
}
}
ParameterizedXtextRunner (영감 여기에서 : https://www.eclipse.org/forums/index.php?t=msg&th=1075706&goto=1726802&) :
class ParameterizedXtextRunner extends XtextRunner {
val Object[] parameters;
val String annotatedName;
new(TestWithParameters test) throws InitializationError {
super(test.testClass.javaClass)
parameters = test.parameters;
annotatedName = test.name;
}
override protected getName() {
return super.name + annotatedName;
}
override protected createTest() throws Exception {
val object = testClass.onlyConstructor.newInstance(parameters)
val injectorProvider = getOrCreateInjectorProvider
if (injectorProvider != null) {
val injector = injectorProvider.injector
if (injector != null)
injector.injectMembers(object)
}
return object;
}
override protected void validateConstructor(List<Throwable> errors) {
validateOnlyOneConstructor(errors)
}
그리고 마지막으로 XtextParametersRunnerFactory :
class XtextParametersRunnerFactory implements ParametersRunnerFactory {
override createRunnerForTestWithParameters(TestWithParameters test) throws InitializationError {
new ParameterizedXtextRunner(test)
}
}
,536,913 여기
는 테스트 클래스