### Question:
ClassPathPluginLoader implements PluginLoader { public Collection<Plugin> loadAllPlugins(final ModuleDescriptorFactory moduleDescriptorFactory) throws PluginParseException { if (plugins == null) { loadClassPathPlugins(moduleDescriptorFactory); } return plugins; } ClassPathPluginLoader();  ClassPathPluginLoader(final String fileNameToLoad); Collection<Plugin> loadAllPlugins(final ModuleDescriptorFactory moduleDescriptorFactory); boolean supportsRemoval(); boolean supportsAddition(); Collection<Plugin> addFoundPlugins(final ModuleDescriptorFactory moduleDescriptorFactory); void removePlugin(final Plugin plugin);  }### Answer:
@Test public void testAtlassianPlugin() throws Exception { ClassPathPluginLoader loader = new ClassPathPluginLoader("test-maera-plugin.xml"); DefaultModuleDescriptorFactory moduleDescriptorFactory = new DefaultModuleDescriptorFactory(new DefaultHostContainer()); moduleDescriptorFactory.addModuleDescriptor("animal", MockAnimalModuleDescriptor.class); moduleDescriptorFactory.addModuleDescriptor("mineral", MockMineralModuleDescriptor.class); moduleDescriptorFactory.addModuleDescriptor("vegetable", MockMineralModuleDescriptor.class); Collection plugins = loader.loadAllPlugins(moduleDescriptorFactory); Plugin plugin = (Plugin) plugins.iterator().next(); assertEquals("Test Plugin", plugin.getName()); assertEquals("test.maera.plugin", plugin.getKey()); assertEquals("This plugin descriptor is just used for test purposes!", plugin.getPluginInformation().getDescription()); assertEquals(4, plugin.getModuleDescriptors().size()); assertEquals("Bear Animal", plugin.getModuleDescriptor("bear").getName()); }