W standardowej dystrybucji DBUnit nie ma możliwości załadowania danych w formacie JSON. Nie mi rozsądzać czy to dobrze czy to źle, ale jako, że nie ma to będzie.

Do prawidłowego działania wymagana jest biblioteka google-gson:

Listing 1. Konfiguracja w pom.xml

		<dependency><groupid>com.google.code.gson</groupid><artifactid>gson</artifactid><version>2.2.1</version></dependency>

Oraz klasa narzędziowa z poprzedniego wpisu.

Listing 2. Klasa JsonDataSet

public class JsonDataSet extends AbstractDataSet {

	private class JsonTable {
		private String[] columns;
		private String name;
		private String[][] rows;

		public String[] columns() {
			return columns;
		}

		public String name() {
			return name;
		}

		public String[][] rows() {
			return rows;
		}

	}

	private final OrderedTableNameMap _tables;

	private JsonTable[] tables;

	private JsonDataSet() {
		_tables = super.createTableNameMap();
	}

	@Override
	protected ITableIterator createIterator(boolean reversed) throws DataSetException {
		@SuppressWarnings("unchecked")
		ITable[] tables = (ITable[]) _tables.orderedValues().toArray(new ITable[0]);
		return new DefaultTableIterator(tables, reversed);
	}

	private JsonDataSet init() throws DataSetException {
		for (JsonTable jsonTable : tables) {
			ITable iTable = table(jsonTable.name(), jsonTable.columns(), jsonTable.rows());
			_tables.add(iTable.getTableMetaData().getTableName(), iTable);
		}
		return this;
	}

	public static JsonDataSet build(Reader jsonReader) throws DataSetException {
		JsonDataSet fromJson = new Gson().fromJson(jsonReader, JsonDataSet.class);
		return fromJson.init();
	}

	public static JsonDataSet build(String jsonString) throws DataSetException {
		final JsonDataSet fromJson = new Gson().fromJson(jsonString, JsonDataSet.class);
		return fromJson.init();
	}
}

Listing 3. Przykładowe dane

{"tables":[
{"name":"AIO","columns":["name","pass"],"rows":[["a","b"],["aa","bb"]]},
{"name":"SimpleUser","columns":["name","password"],"rows":[["a","b"],["aa","bb"]]}
]}

i

Listing 4. Przykładowe zastosowanie

forDB("org.hsqldb.jdbcDriver", //
				"jdbc:hsqldb:file:src/test/resources/db/unit-testing-jpa", //
				"sa", "") //
				.cleanInsert(JsonDataSet.build( //
						new FileReader(new File("src/test/resources/simplejsontable")) //
						));

Wieczorem opakuje to może w jakiś projekt i umieszczę na Google Code.