opcja w ostatnich czasach jest użycie czegoś podobnego http://github.com/google/compile-testing który pozwala przywołać pracę kompilacji przed arbitralnymi procesorów adnotacji, które można ustawić punkty przerwy, krok po kroku, itp
@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);
}
Test oczekuje cię otrzyma komunikat o błędzie, ponieważ @MyAnnotation jest niepoprawnie zadeklarowany w źródle danych testu. Jeśli to stwierdzenie nie powiedzie się, możesz uruchomić go w trybie debugowania w IDE, ustawić punkty przerwania w MyProcessor i krok po kroku z pełnym środowiskiem kompilatora aktywnym podczas debugowania.
Do testowania konkretnych metod w ramach jednego procesora można również użyć @Rule o nazwie CompilationRule, z którego można uzyskać klasy narzędziowe Elements i Typ, aby przetestować określoną logikę w kompilatorze w bardziej izolowany sposób.
Witam, przeczytanie tej odpowiedzi jako zaakceptowanej, spraw, żebym myślał, że to rozwiązanie problemu. Nawiasem mówiąc, nie rozumiem, co "wywołuję kompilator Java z Eclipse, używając konfiguracji debugowania (musisz utworzyć konfigurację ręcznie, z" Konfiguracji debugowania. "Oznacza: czy możesz wyjaśnić lepiej proszę? Dzięki – Apperside
Dodałem tools.jar i jar procesora do istniejącego projektu, a następnie skorzystałem z sugerowanej klasy com.sun.tools.javac.Main Utworzono konfigurację debugowania aplikacji Java za pomocą tools.jar w ścieżce klas, a argumenty javac jako Argumenty programowe, działały jak czar - dzięki! – wbdarby