/** * The contents of this file are subject to the license and copyright * detailed in the LICENSE and NOTICE files at the root of the source * tree and available online at * * http://www.dspace.org/license/ */ package org.dspace; import static org.junit.Assert.fail; import java.io.IOException; import java.net.URL; import java.sql.SQLException; import java.time.ZoneOffset; import java.util.Properties; import java.util.TimeZone; import org.apache.logging.log4j.Logger; import org.dspace.servicemanager.DSpaceKernelImpl; import org.dspace.servicemanager.DSpaceKernelInit; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Rule; import org.junit.rules.TestName; import org.junit.runner.RunWith; import org.mockito.junit.MockitoJUnitRunner; /** * DSpace Unit Tests need to initialize the DSpace Kernel / Service Mgr * in order to have access to configurations, etc. This Abstract class only * initializes the Kernel (without full in-memory DB initialization). *
* Tests which just need the Kernel (or configs) can extend this class. *
* Tests which also need an in-memory DB should extend AbstractUnitTest or AbstractIntegrationTest
*
* @author Tim
* @see AbstractUnitTest
* @see AbstractIntegrationTest
*/
@Ignore
@RunWith(MockitoJUnitRunner.class)
public class AbstractDSpaceTest {
/**
* Default constructor
*/
protected AbstractDSpaceTest() { }
/**
* log4j category
*/
private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(AbstractDSpaceTest.class);
/**
* Test properties. These configure our general test environment
*/
protected static Properties testProps;
/**
* DSpace Kernel. Must be started to initialize ConfigurationService and
* any other services.
*/
protected static DSpaceKernelImpl kernelImpl;
/**
* Obtain the TestName from JUnit, so that we can print it out in the test logs (see below)
*/
@Rule
public TestName testName = new TestName();
/**
* This method will be run before the first test as per @BeforeClass. It will
* initialize shared resources required for all tests of this class.
*
* This method loads our test properties to initialize our test environment,
* and then starts the DSpace Kernel (which allows access to services).
*/
@BeforeClass
public static void initKernel() {
try {
// All tests should assume UTC timezone by default (unless overridden in the test itself)
// This ensures that Spring doesn't attempt to change the timezone of dates that are read from the
// database (via Hibernate). We store all dates in the database as UTC.
TimeZone.setDefault(TimeZone.getTimeZone(ZoneOffset.UTC));
//load the properties of the tests
testProps = new Properties();
URL properties = AbstractDSpaceTest.class.getClassLoader()
.getResource("test-config.properties");
testProps.load(properties.openStream());
// Initialise the service manager kernel
kernelImpl = DSpaceKernelInit.getKernel(null);
if (!kernelImpl.isRunning()) {
// NOTE: the "dspace.dir" system property MUST be specified via Maven
// For example: by using