의 옵션 등이
@Test public void testStuff() {
// Create a source file to process, or load one from disk.
JavaFileObject file = JavaFileObjects.fromSourceLines("test.Foo",
"package test;",
"",
"import bar.*;",
"",
"@MyAnnotation(blah=false)",
"interface TestInterface {",
" Bar someBar();",
"}",
// assert conditions following a compilation in the context of MyProcessor.
assert_().about(javaSource()).that(file)
.processedWith(new MyProcessor())
.failsToCompile()
.withErrorContaining("some error message").in(file).onLine(5);
}
이 테스트는 당신을 기대하고, 단계별, 당신은 당신이 브레이크 포인트를 설정할 수 있습니다 임의의 주석 프로세서에 대한 편집 작업을 호출 할 수 있습니다 http://github.com/google/compile-testing 같은 것을 사용하는 것입니다 @MyAnnotation이 테스트 데이터 소스에서 잘못 선언 되었기 때문에 일부 오류 메시지가 표시됩니다. 이 어설 션이 실패하면 IDE에서 디버그 모드로 실행하고 MyProcessor에서 중단 점을 설정 한 다음 디버깅하는 동안 전체 컴파일러 환경을 활성화하여 단계별로 실행할 수 있습니다. 단위 테스트에 대한
구체적인 방법 프로세서 내에서, 당신은 또한 당신이 더 고립 방식으로 컴파일러에서 특정 로직을 테스트하기 위해 요소와 유형의 유틸리티 클래스를 얻을 수있는 CompilationRule라는 @Rule을 사용할 수 있습니다.
안녕하세요,이 답변을 수락 한 것으로 읽으면서 문제의 해결책이라고 생각하게 만드십시오. 그런데, "디버그 구성을 사용하여 Eclipse에서 Java 컴파일러를 호출하는 것을 이해하지 못합니다 ("디버그 구성 "에서 수동으로 구성을 작성해야합니다.). 더 잘 설명 할 수 있습니까? thanks – Apperside
기존 프로젝트에 tools.jar 및 프로세서 jar를 추가 한 다음 제안 된대로 com.sun.tools.javac.Main 클래스를 사용했습니다. 클래스 경로에 tools.jar, javac 인수에 Java 응용 프로그램 디버그 구성을 생성했습니다. 프로그램 인수 - 매력처럼 작동했습니다 - 감사합니다! – wbdarby