2010-01-21 5 views
17

J'utilise DbUnit pour le test unitaire de mes objets DAO. Cela fonctionne très bien jusqu'à présent.DbUnit et données binaires

J'ai un problème, j'ai champ ob type byte[] qui est stocké comme BLOB dans la base de données. La colonne n'est pas nulle. Comment puis-je spécifier la valeur de cette colonne dans le fichier de jeu de données XML que DbUnit utilise? La valeur peut ne rien avoir de fantaisie, 5 octets suffiront. Je voudrais éviter la nécessité de créer des fichiers binaires supplémentaires juste pour cela.

Des suggestions?

Répondre

23

Après tout ce que je résolu comme ça:

fichier XML de données:

 
<?xml version="1.0" encoding="UTF-8"?> 
<dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > 
    <!-- image_content is string '12345' Base64 encoded --> 
    <IMAGE IMAGE_ID="1" IMAGE_CONTENT="MTIzNDU="/> 
</dataset> 

DbUnit a un support intégré pour les données codées en base64, il Transformes correctement dans un tableau d'octets.

test Code de cas:

 
assertEquals("12345".getBytes(), image.getContent()); 
+1

Cela fonctionne avec NDbUnit ainsi si vous définissez dans votre fichier de données XML: ' MjBxdxxY7NbME2Ha6DKhepVpwio =' –

+0

Par exemple, l'encodage base64 dans Postgres: 'select encoder ('12345', 'base64');' –

Questions connexes