diff --git a/README.adoc b/README.adoc
index f5cdf13..974d1e3 100644
--- a/README.adoc
+++ b/README.adoc
@@ -993,6 +993,37 @@ In order to export database state *after test* execution into datasets files one
After execution of above test, all tables will be exported to a xml dataset.
+
+[TIP]
+====
+You don't need `@ExportDataSet`, you can use DataSetExporter component programmatically:
+
+[source,java,linenums]
+----
+ @Test
+ @DataSet(cleanBefore=true)
+ public void shouldExportYMLDataSetWithoutAnnotations() throws SQLException, DatabaseUnitException{
+ tx().begin();
+ User u1 = new User();
+ u1.setName("u1");
+ em().persist(u1);
+ tx().commit();
+ DataSetExporterImpl.getInstance().export(new DatabaseConnection(emProvider.connection()), <1>
+ new DataSetExportConfig().outputFileName("target/user.yml"));
+ File ymlDataSet = new File("target/user.yml");
+ assertThat(ymlDataSet).exists();
+ assertThat(contentOf(ymlDataSet)).
+ contains("USER:"+NEW_LINE +
+ " - ID: 1"+NEW_LINE +
+ " NAME: \"u1\""+NEW_LINE
+ );
+
+ }
+----
+<1> DatabaseConnection is from DBUnit api and it needs a JDBC connection.
+
+====
+
NOTE: *xml*, *yml*, *JSON*, *XLS* and *CSV* formats are supported.
TIP: Full example above (and other related tests) can be https://github.com/rmpestano/dbunit-rules/blob/master/core/src/test/java/com/github/dbunit/rules/ExportDataSetIt.java#L35[found here^].
diff --git a/cdi/src/main/java/com/github/dbunit/rules/cdi/DataSetProcessor.java b/cdi/src/main/java/com/github/dbunit/rules/cdi/DataSetProcessor.java
index 181bc87..c06c83c 100644
--- a/cdi/src/main/java/com/github/dbunit/rules/cdi/DataSetProcessor.java
+++ b/cdi/src/main/java/com/github/dbunit/rules/cdi/DataSetProcessor.java
@@ -124,8 +124,9 @@ public void exportDataSet(Method method) {
if(outputName == null || "".equals(outputName.trim())){
outputName = method.getName().toLowerCase()+"."+exportConfig.getDataSetFormat().name().toLowerCase();
}
+ exportConfig.outputFileName(outputName);
try {
- DataSetExporterImpl.getInstance().export(dataSetExecutor.getDBUnitConnection(),exportConfig ,outputName);
+ DataSetExporterImpl.getInstance().export(dataSetExecutor.getDBUnitConnection(),exportConfig);
} catch (Exception e) {
java.util.logging.Logger.getLogger(getClass().getName()).log(Level.WARNING,"Could not export dataset after method "+method.getName(),e);
}
diff --git a/cdi/src/test/resources/META-INF/persistence.xml b/cdi/src/test/resources/META-INF/persistence.xml
index c92c0d6..2442181 100644
--- a/cdi/src/test/resources/META-INF/persistence.xml
+++ b/cdi/src/test/resources/META-INF/persistence.xml
@@ -13,8 +13,8 @@
-
-
+
diff --git a/core/src/main/java/com/github/dbunit/rules/DBUnitRule.java b/core/src/main/java/com/github/dbunit/rules/DBUnitRule.java
index cfba2e7..1852ed4 100644
--- a/core/src/main/java/com/github/dbunit/rules/DBUnitRule.java
+++ b/core/src/main/java/com/github/dbunit/rules/DBUnitRule.java
@@ -163,8 +163,9 @@ private void exportDataSet(DataSetExecutor executor, Description description) {
if(outputName == null || "".equals(outputName.trim())){
outputName = description.getMethodName().toLowerCase()+"."+exportConfig.getDataSetFormat().name().toLowerCase();
}
+ exportConfig.outputFileName(outputName);
try {
- DataSetExporterImpl.getInstance().export(executor.getDBUnitConnection(),exportConfig ,outputName);
+ DataSetExporterImpl.getInstance().export(executor.getDBUnitConnection(),exportConfig);
} catch (Exception e) {
Logger.getLogger(getClass().getName()).log(Level.WARNING,"Could not export dataset after method "+description.getMethodName(),e);
}
diff --git a/core/src/main/java/com/github/dbunit/rules/exporter/DataSetExporterImpl.java b/core/src/main/java/com/github/dbunit/rules/exporter/DataSetExporterImpl.java
index 2ce435f..3413db6 100644
--- a/core/src/main/java/com/github/dbunit/rules/exporter/DataSetExporterImpl.java
+++ b/core/src/main/java/com/github/dbunit/rules/exporter/DataSetExporterImpl.java
@@ -57,7 +57,7 @@ public static DataSetExporterImpl getInstance(){
return instance;
}
- public OutputStream export(DatabaseConnection databaseConnection, DataSetExportConfig dataSetExportConfig, String outputFile) throws SQLException, DatabaseUnitException {
+ public OutputStream export(DatabaseConnection databaseConnection, DataSetExportConfig dataSetExportConfig) throws SQLException, DatabaseUnitException {
if (databaseConnection == null || databaseConnection.getConnection() == null || databaseConnection.getConnection().isClosed()) {
throw new RuntimeException("Provide a valid connection to export datasets");
@@ -66,11 +66,13 @@ public OutputStream export(DatabaseConnection databaseConnection, DataSetExportC
if (dataSetExportConfig == null) {
dataSetExportConfig = new DataSetExportConfig();
}
+
+ String outputFile = dataSetExportConfig.getOutputFileName();
if(outputFile == null || "".equals(outputFile)){
throw new RuntimeException("Provide output file name to export dataset.");
}
-
+
if(!outputFile.contains(".")){
outputFile = outputFile +"."+dataSetExportConfig.getDataSetFormat().name().toLowerCase();
}
diff --git a/core/src/test/java/com/github/dbunit/rules/ExportDataSetIt.java b/core/src/test/java/com/github/dbunit/rules/exporter/ExportDataSetIt.java
similarity index 89%
rename from core/src/test/java/com/github/dbunit/rules/ExportDataSetIt.java
rename to core/src/test/java/com/github/dbunit/rules/exporter/ExportDataSetIt.java
index c4daa43..465f521 100644
--- a/core/src/test/java/com/github/dbunit/rules/ExportDataSetIt.java
+++ b/core/src/test/java/com/github/dbunit/rules/exporter/ExportDataSetIt.java
@@ -1,11 +1,18 @@
-package com.github.dbunit.rules;
+package com.github.dbunit.rules.exporter;
+import com.github.dbunit.rules.DBUnitRule;
import com.github.dbunit.rules.api.dataset.DataSet;
import com.github.dbunit.rules.api.dataset.DataSetFormat;
+import com.github.dbunit.rules.api.expoter.DataSetExportConfig;
import com.github.dbunit.rules.api.expoter.ExportDataSet;
import com.github.dbunit.rules.configuration.DataSetConfig;
import com.github.dbunit.rules.dataset.DataSetExecutorImpl;
+import com.github.dbunit.rules.exporter.DataSetExporterImpl;
+import com.github.dbunit.rules.model.User;
import com.github.dbunit.rules.util.EntityManagerProvider;
+
+import org.dbunit.DatabaseUnitException;
+import org.dbunit.database.DatabaseConnection;
import org.junit.AfterClass;
import org.junit.Rule;
import org.junit.Test;
@@ -13,9 +20,11 @@
import org.junit.runners.JUnit4;
import java.io.File;
+import java.sql.SQLException;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.contentOf;
+import static com.github.dbunit.rules.util.EntityManagerProvider.*;
/**
* Created by pestano on 11/09/16.
@@ -58,6 +67,25 @@ public void shouldExportAllTablesInYMLFormatWithoutDataSetAnnotation() {
public void shouldExportAllTablesInXLSFormat() {
}
+ @Test
+ @DataSet(cleanBefore=true)
+ public void shouldExportYMLDataSetWithoutAnnotations() throws SQLException, DatabaseUnitException{
+ tx().begin();
+ User u1 = new User();
+ u1.setName("u1");
+ em().persist(u1);
+ tx().commit();
+ DataSetExporterImpl.getInstance().export(new DatabaseConnection(emProvider.connection()), new DataSetExportConfig().outputFileName("target/user.yml"));
+ File ymlDataSet = new File("target/user.yml");
+ assertThat(ymlDataSet).exists();
+ assertThat(contentOf(ymlDataSet)).
+ contains("USER:"+NEW_LINE +
+ " - ID: 1"+NEW_LINE +
+ " NAME: \"u1\""+NEW_LINE
+ );
+
+ }
+
@Test
@DataSet("datasets/yml/users.yml")
@ExportDataSet(format = DataSetFormat.CSV,outputName="target/exported/csv/allTables.csv")
diff --git a/core/src/test/resources/META-INF/persistence.xml b/core/src/test/resources/META-INF/persistence.xml
index b6d98f4..1e16663 100644
--- a/core/src/test/resources/META-INF/persistence.xml
+++ b/core/src/test/resources/META-INF/persistence.xml
@@ -13,8 +13,8 @@
-
-
+
@@ -32,8 +32,8 @@
-
-
+
@@ -51,8 +51,8 @@
-
-
+
@@ -70,8 +70,8 @@
-
-
+
@@ -89,8 +89,8 @@
-
-
+
@@ -108,8 +108,8 @@
-
-
+
diff --git a/examples/jOOQ-DBUnit-flyway-example/src/main/resources/log4j.xml b/examples/jOOQ-DBUnit-flyway-example/src/main/resources/log4j.xml
index 1707cf2..efbf186 100644
--- a/examples/jOOQ-DBUnit-flyway-example/src/main/resources/log4j.xml
+++ b/examples/jOOQ-DBUnit-flyway-example/src/main/resources/log4j.xml
@@ -8,7 +8,7 @@
-
+
\ No newline at end of file
diff --git a/examples/jpa-productivity-boosters/src/test/resources/META-INF/persistence.xml b/examples/jpa-productivity-boosters/src/test/resources/META-INF/persistence.xml
index 8e18350..fd8258a 100644
--- a/examples/jpa-productivity-boosters/src/test/resources/META-INF/persistence.xml
+++ b/examples/jpa-productivity-boosters/src/test/resources/META-INF/persistence.xml
@@ -15,7 +15,7 @@
-
+
diff --git a/junit5/src/main/java/com/github/dbunit/rules/junit5/DBUnitExtension.java b/junit5/src/main/java/com/github/dbunit/rules/junit5/DBUnitExtension.java
index db41694..aff27fc 100644
--- a/junit5/src/main/java/com/github/dbunit/rules/junit5/DBUnitExtension.java
+++ b/junit5/src/main/java/com/github/dbunit/rules/junit5/DBUnitExtension.java
@@ -111,8 +111,9 @@ public void exportDataSet(DataSetExecutor dataSetExecutor, Method method) {
if(outputName == null || "".equals(outputName.trim())){
outputName = method.getName().toLowerCase()+"."+exportConfig.getDataSetFormat().name().toLowerCase();
}
+ exportConfig.outputFileName(outputName);
try {
- DataSetExporterImpl.getInstance().export(dataSetExecutor.getDBUnitConnection(),exportConfig ,outputName);
+ DataSetExporterImpl.getInstance().export(dataSetExecutor.getDBUnitConnection(),exportConfig);
} catch (Exception e) {
java.util.logging.Logger.getLogger(getClass().getName()).log(Level.WARNING,"Could not export dataset after method "+method.getName(),e);
}
diff --git a/junit5/src/test/resources/META-INF/persistence.xml b/junit5/src/test/resources/META-INF/persistence.xml
index c3c4f89..d998786 100644
--- a/junit5/src/test/resources/META-INF/persistence.xml
+++ b/junit5/src/test/resources/META-INF/persistence.xml
@@ -14,7 +14,7 @@
-
+