2016-09-16 39 views
5

Piszę niestandardową wtyczkę Gradle. Piszę testy dla każdej funkcji, którą chcę utworzyć w wtyczce. Używam java do napisania wtyczki.Jak przetestować AfterEvaluate podczas pisania wtyczki Gradle

Tworzę moje zadania w metodzie apply odziedziczonej z interfejsu Plugin.

Mam wiele zależności od zadań, które są dostępne w After evaluate etapie cyklu życia projektu, ale nie wcześniej (przynajmniej nie w apply fase) i nie mam kontroli nad sposobem, w jaki te zewnętrzne zadania są określone.

Więc określenie współzależności z tych zadań przy użyciu

project.afterEvaluate((project) -> { 
    customTask.dependsOn(project.getTasks().getByName("nameOfTheTask")); 
}); 

W kodzie testowym Mam następującą konfigurację, używając JUnit i Gradle zestaw testowy:

@BeforeClass 
public static void initializeProject() { 
    project = ProjectBuilder.builder().build(); 

    customPlugin = new CustomPlugin(); 
    customPlugin.apply(project); 
} 

mogę sprawdzić regularne (tzn. poza blokiem AfterEvaluate) w przypadkach testowych przez pobieranie moich zadań za pomocą Nie jest to jednak możliwe dla zależności zdefiniowanych dla określonego cyklu życia lub, bardziej ogólnie, dla zamknięcia.

Czy istnieje sposób sprawdzenia, czy poprawne zależności są ustawione dla określonego cyklu życia? Czy istnieje sposób na odzyskanie zarejestrowanego bloku kodu?

P.S. Mógłbym używać odlewania, refleksji, cieniowania, modyfikacji itp., Ale naprawdę chciałbym usłyszeć, czy to jest sprawdzalne, czy może w końcu podejmuję niewłaściwe podejście. Dzięki!

Odpowiedz

0

To działa na mnie, gdybym zastosować niestandardową wtyczkę takiego:

project.getPluginManager().apply(CustomPlugin.class); 
0

nie mogłem znaleźć właściwą/publiczny API sposób robi to jednak na Gradle 4.3.1 działa to dla mnie:

project.getTasksByName("tasks", false); //internally it calls project.evaluate() 

Wewnętrznie metoda wymusza ocenę projektu, a co za tym idzie wywołanie haseł AfterEvaluate.