Hi, Here is a progress update on my work with AssemblyMojo.
I've been writing some exploratory tests to lock down the current behaviour of the AssemblyMojo. 1/ Split AssemblyMojo into a parameter/configuration class and a behaviour class I have extracted the doExecute() method and supporting methods out of AssemblyMojo and into AssemblyMojoExec. (That probably needs a better name: AssemblyService?). This left all the @Parameter fields in AssemblyMojo, which is now passed as a single parameter object: AssemblyMojoExec.doExecute(AssemblyMojo mojo). This gives a clean separation between capturing 39 @Parameters and performing the actual assembly. 2/ Upgraded Maven in the tooling package to 3.5.0 This allows simplification of accessing the Maven API and avoids the need to use reflection. Upgrading the rest of karaf is outside the current scope. 3/ Added jacoco for code coverage, without any minimum coverage requirements Jacoco is licensed under Eclipse Public License Version 1.0. 4/ Added mockito for test support Mockito is licensed under M.I.T. License. 5/ Added hamcrest for test support Hamcrest is licensed under BSD License. 6/ Write tests for AssemblyMojoExec covering 86% of branches. The remaining 14% of branches are in unreachable File IO or Reflection exceptions and in switch statements. 7/ Identify unused @Parameters The following @Parameter fields in AssemblyMojo are unused and could be removed without affecting the tests. * featuresCfgFile * startupPropertiesFile * systemDirectory * defaultStartLevel * blacklistedRepositories * blacklistedFeatures * startupBundles * bootBundles * installedBundles * blacklistedBundles * blacklistedProfiles Is there any reason to keep any of these @Parameters? They are configuration items used by other Mojos. AssemblyMojo should really only ask for the @Parameters that it uses. --- This current state is in https://github.com/kemitix/karaf/tree/assembly-mojo-test-coverage Going on from here, I will be working in the assembly-mojo-refactoring branch to clean up and simplify the mojo, using the AssemblyMojoExecTest to ensure that behaviour remains consistent. Feedback welcome. -- Paul [W] Campbell If you reply to this email, your message will be added to the discussion below: http://karaf.922171.n3.nabble.com/Unit-tests-and-refactoring-karaf-maven-plugin-AssemblyMojo-tp4050098p4050113.html To unsubscribe from Unit tests and refactoring - karaf-maven-plugin - AssemblyMojo, click here. NAML
