[RESOLVIDO] DBUnit inserindo NULL

Pessoal,

Eu tenho o seguinte arquivo xml:

<?xml version='1.0' encoding='UTF-8'?>
<dataset>
...
  <TBL_COMPOSICAO COD_CURVA="IRBRL" DATA="2008-09-30 00:00:00.0" INSTRUMENTO="DIFUT" ORDEM="0" PRAZOMIN="0" PRAZOMAX="252" LIQUIDEZ="10.000000" VENCIMENTO="2"/>
  <TBL_COMPOSICAO COD_CURVA="IRBRL" DATA="2008-09-30 00:00:00.0" INSTRUMENTO="DIFUT" ORDEM="252" PRAZOMIN="252" PRAZOMAX="503" LIQUIDEZ="3.000000" VENCIMENTO="2"/>
  <TBL_COMPOSICAO COD_CURVA="IRBRL" DATA="2008-09-30 00:00:00.0" INSTRUMENTO="DIFUT" ORDEM="503" PRAZOMIN="503" LIQUIDEZ="1.000000" VENCIMENTO="2"/>
...
</dataset>

Notem que no terceiro registro, o campo PRAZOMAX é nulo.

Para rodar meus testes, eu populo a base de dados com o seguinte código:

...
conn = new DatabaseConnection(jdbcConn);
dataSet = new FlatXmlDataSet(new FileInputStream("./XMLDataSets/curvas.xml")); 
DatabaseOperation.CLEAN_INSERT.execute(conn, dataSet);
...

O problema é que o DBUnit está inserindo NULL para o campo PRAZOMAX de TODOS os registros. Alguém tem alguma idéia do motivo disso?

Pessoal,

Descobri o motivo, seguindo a documentação do DBUnit: segundo ela, o DBUnit infere as colunas da tabela a partir do primeiro registro no arquivo xml. E, no meu caso, o primeiro registro (que eu omiti na listagem anterior) também tinha o campo PRAZOMAX igual a null. Para contornar isso, a documentação sugere que se leia o arquivo xml da seguinte forma:

dataSet = new FlatXmlDataSet(new File("./XMLDataSets/risco.xml"), false, true);

onde o true indica que o DBUnit deve ler todos os registros antes de inferir a estrutura da tabela. No meu caso, resolveu. Fica aí a dica para quem passar pelo mesmo problema. :smiley: