DbUnit and binary data
Asked Answered
E

1

18

I use DbUnit for unit-testing of my DAO objects. It works great so far.

I have a problem, I have field ob type byte[] which is stored as BLOB in the database. The column is not-null. How can I specify the value for this column in the XML dataset file, that DbUnit uses? The value can be nothing fancy, 5 bytes will be enough. I would like to avoid necessity to create extra binary files just for this.

Any suggestions?

Escutcheon answered 21/1, 2010 at 8:47 Comment(0)
E
26

After all I solved it like that:

XML dataset file:

<?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 has built-in support for Base64 encoded data, it transformes correctly into byte array.

Test case code:

assertEquals("12345".getBytes(), image.getContent());
Escutcheon answered 21/1, 2010 at 9:36 Comment(3)
This works with NDbUnit as well if you define it in your XML data file: <HashedPassword>MjBxdxxY7NbME2Ha6DKhepVpwio=</HashedPassword>Noakes
For example, base64 encoding in Postgres: select encode('12345', 'base64');Golly
Just a heads up: when converting between strings and bytes and vica versa, such as in the assertEquals method example in this answer, always specify a charset to use. I just had a unit test that worked in my IDE (which defaulted to UTF-8) but failed when building with Maven (which used the windows default encoding, resulting in a string to not match)Bruckner

© 2022 - 2024 — McMap. All rights reserved.