org.unitils.dbunit.annotation.DataSet Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of unitils Show documentation
Show all versions of unitils Show documentation
Unitils provides utilities to further simplify unit-testing with JUnit, DBUnit, EasyMock
Hibernate and Spring. The goal is to make unit-testing easy and maintainable by offering
utilities such as automatic DB-schema maintainance and equality assertion through reflection.
/*
* Copyright 2006-2007, Unitils.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.unitils.dbunit.annotation;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import org.unitils.dbunit.datasetfactory.DataSetFactory;
import org.unitils.dbunit.datasetloadstrategy.DataSetLoadStrategy;
/**
* Annotation indicating that a data set should be loaded before the test run.
*
* If a class is annotated, a test data set will be loaded before the execution of each of the test methods in
* the class. A data set file name can explicitly be specified. If no such file name is specified, first a data set
* named 'classname'.'testmethod'.xml will be tried, if no such file exists, 'classname'.xml will be tried. If that
* file also doesn't exist, an exception will be thrown. Filenames that start with '/' are treated absolute. Filenames
* that do not start with '/', are relative to the current class.
*
* A test method can also be annotated with DataSet in which case you specify the dataset that needs to be loaded
* before this test method is run. Again, a file name can explicitly be specified or if not specified, the default will
* be used: first 'classname'.'methodname'.xml and if that file does not exist 'classname'.xml.
*
* Examples:
*
* ' @DataSet
* public class MyTestClass extends UnitilsJUnit3 {
* '
* public void testMethod1(){
* }
* '
* ' @DataSet("aCustomFileName.xml")
* public void testMethod2(){
* }
* }
*
* Will load a data set file named MyTestClass.xml or MyTestClass-testMethod1.xml for testMethod1 in the same directory
* as the class. And for testMethod2 a data set file named aCustomFileName.xml in the same directory as the class is
* loaded.
*
*
* public class MyTestClass extends UnitilsJUnit3 {
* '
* public void testMethod1(){
* }
* '
* ' @DataSet
* public void testMethod2(){
* }
* }
*
* Will not load any dataset for testMethod1 (there is no class level data set). Will load a data set file named
* MyTestClass.xml or MyTestClass.testMethod2.xml for testMethod2.
*
* @author Filip Neven
* @author Tim Ducheyne
*/
@Target({TYPE, METHOD})
@Retention(RUNTIME)
@Inherited
public @interface DataSet {
/**
* The file name of the data set. If left empty, the default filename will
* be used: first 'classname'.'testMethodname'.xml will be tried, if that file does not exist,
* 'classname'.xml is tried. If that file also does not exist, an exception is thrown.
*
* @return the fileName, empty for default
*/
String[] value() default {};
/**
* The strategy that needs to be used to get the dbunit dataset into the database
*
* @return An implementation class of {@link DataSetLoadStrategy}. Use the default value {@link DataSetLoadStrategy}
* to make use of the default loadStragegy configured in the unitils configuration.
*/
Class loadStrategy() default DataSetLoadStrategy.class;
/**
* The factory that needs to be used to read the dataset file and create a {@link org.unitils.dbunit.util.MultiSchemaDataSet}
* object
*
* @return An implementation class of {@link DataSetFactory}. Use the default value {@link DataSetFactory}
* to make use of the default DataSetLoadStrategy configured in the unitils configuration.
*/
Class factory() default DataSetFactory.class;
}