障害メモ/DBUnitがリソースを読み込めない
キーワード
- DBUtil
- gradle build
関連
現象
gradle buildしたときのテストで、DBUnitがリソースを読み込めない。
org.dbunit.dataset.DataSetException: error getting list of tables
at org.dbunit.dataset.csv.CsvURLProducer.produce(CsvURLProducer.java:115)
at org.dbunit.dataset.CachedDataSet.<init>(CachedDataSet.java:97)
at org.dbunit.dataset.CachedDataSet.<init>(CachedDataSet.java:81)
at org.dbunit.dataset.csv.CsvURLDataSet.<init>(CsvURLDataSet.java:49)
(中略)
Caused by: java.io.FileNotFoundException: C:\path\to\project\build\classes\test\path\to\resouces\table-ordering.txt (指定されたファイルが見つかりません。)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
at java.net.URL.openStream(URL.java:1045)
at org.dbunit.dataset.csv.CsvProducer.getTables(CsvProducer.java:152)
at org.dbunit.dataset.csv.CsvURLProducer.produce(CsvURLProducer.java:103)
原因
gradleがリソースを出力する先とDBUnitがリソースを入力する元が違う。
| gradleの出力先 | DBUnitの入力元 |
|---|---|
| build/resources/test | build/classes/test |
対策
gradleがリソースを出力する先を変更する。
sourceSets {
test {
output.resourcesDir = output.classesDir
}
}
dependencies{}の下にでも書いてあげるとよい。
備考
STS(Eclipse)で開発しているときでも、まめに端末からビルドしてあげないと後で焦る。
参考
作成日 2017-04-21
