All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.xwiki.test.jmock.AbstractComponentTestCase Maven / Gradle / Ivy

/*
 * See the NOTICE file distributed with this work for additional
 * information regarding copyright ownership.
 *
 * This is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2.1 of
 * the License, or (at your option) any later version.
 *
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this software; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */
package org.xwiki.test.jmock;

import java.util.List;

import org.junit.After;
import org.junit.Before;
import org.xwiki.component.annotation.ComponentAnnotationLoader;
import org.xwiki.component.descriptor.ComponentDescriptor;
import org.xwiki.test.internal.MockConfigurationSource;

/**
 * Tests which needs to have XWiki Components set up should extend this class which makes the Component Manager
 * available. Use this class for JUnit 4.x tests.
 * 

* XWiki 2.2M1 also introduced {@link AbstractMockingComponentTestCase} which provides automatic mocking for injected * component dependencies and which is thus better when writing pure unit tests, isolated from the rest. *

* Consider using this class only for integration tests. * * @deprecated use {@link org.xwiki.test.junit5.mockito.ComponentTest} instead */ @Deprecated(since = "4.3.1") public abstract class AbstractComponentTestCase extends AbstractMockingTestCase { private XWikiComponentInitializer initializer = new XWikiComponentInitializer(); private ComponentAnnotationLoader componentLoader; /** * Tests that require fine-grained initializations can override this method and not call super. * * @throws Exception in case of errors */ @Before public void setUp() throws Exception { this.initializer.initializeConfigurationSource(); // Put before execution context initialization because it could be needed for some executing context // initializer. registerComponents(); this.initializer.initializeExecution(); } /** * Clean up test states. * * @throws Exception in case of errors */ @After public void tearDown() throws Exception { this.initializer.shutdown(); } /** * Register custom/mock components. * * @throws Exception in case of errors */ protected void registerComponents() throws Exception { // Empty voluntarily. Extending classes can override to provide custom component registration. } @Override public MockingComponentManager getComponentManager() throws Exception { return this.initializer.getComponentManager(); } /** * @return a modifiable mock configuration source */ public MockConfigurationSource getConfigurationSource() { return this.initializer.getConfigurationSource(); } /** * @param componentClass the class of the component to register * @throws Exception in case of errors * @since 3.2M3 */ public void registerComponent(Class componentClass) throws Exception { if (this.componentLoader == null) { this.componentLoader = new ComponentAnnotationLoader(); } List> descriptors = this.componentLoader.getComponentsDescriptors(componentClass, 0); for (ComponentDescriptor descriptor : descriptors) { getComponentManager().registerComponent(descriptor); } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy