Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

<bean id="dataSource" class="org.h2.jdbcx.JdbcDataSource"> <property name="URL" value="jdbc:h2:mem:sample;MODE=MySQL"/> <property name="user" value="user"/> <property name="password" value="password"/> </bean> <jdbc:initialize-database data-source="dataSource" ignore-failures="DROPS"> <jdbc:script location="classpath:schema.sql" /> </jdbc:initialize-database> package jp.ijufumi.test; import java.l
「データセット」とは? DBUnitについて調べてて気になったのが「データセット」という単語。 DBUnitの説明に必ず出てくる割には、これがどういったものなのかぴったりくる説明がありませんでした。 これは、テーブル名・カラム名・データ・主キー の情報のかたまりです。 この情報はIDataSet#getTableMetaData()で取得できます。 ちなみに主キー情報はテーブルからデータを取得した時に設定されます。 DatabaseOperationについて試したり調べたりする機会があったのですが、現在のバージョンではJavadoc(英語)くらいしかいい資料がなかったのでまとめてみました。 もし外部キー制約違反や一意性制約違反が起こった場合は、org.dbunit.DatabaseUnitExceptionが発生します。 この例外は、各DBMSの例外をラップしています。 全てのDataba
はじめに データベースを使ったJavaアプリケーションのユニットテストが難しい理由として以下の3つがあげられると思います。 データベースのセットアップの問題 テストコードやテストデータのメンテナンス性の問題 テストに時間がかかる問題 これらの問題に対応するため、DbUnit(リンク)とH2 Database(リンク)を使ってユニットテストをしてみます。 DbUnitは、依存しているライブラリが多いため、Gradleを使って環境構築していきます。 DBUnit DBUnitは、JUnitのデータベース用の拡張モジュールです。 xmlファイルに書いたデータベースの状態をセットアップします。 テスト完了時のデータベースの状態を、データベースの状態を記載したxmlファイルと比較します。 ファイルフォーマットは、Excelもサポートしています。 H2 Database ピュアJavaのSQLデータベ
Spring Boot に限った話ではないんだけど、今回 Spring Boot で書いたので、そんなタイトルに。 必要とされるシーンが多いわりに、意外と情報が少なかったので、まとめておきます。 DbSetup を使用するものと、DBUnit を使用するもの、それぞれを紹介します。 なお、今回はテストに Groovy Spock を使用します。 検証に使用したものを GitHub に公開しておいたので、こちらを確認しながら追いかけると、より理解しやすいかもしれません。 https://github.com/yo1000/com.yo1000.edu.boot.dbtest 環境 Java 1.8.0_91 Maven 3.3.9 (Maven wrapper) Spring Boot 1.4.0.RELEASE Groovy 2.4.7 Spock 1.1-groovy-2.4-rc-1
過去にこんな記事 (Spock ちっくにテストデータを挿入してみた話) も書きましたが、最近は DBUnit だけでなく、DbSetup を使用することも多かったので、当時作成したモジュールをアップデートしてみました。 なかなかいい感じにデータ表現できるようになったので、ご報告。 環境 Java 1.8.0_91 Maven 3.3.9 Groovy 2.4.7 Spock 1.1-groovy-2.4-rc-1 DbSetup 2.1.0 DBUnit 2.5.3 $ ./mvnw --version Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T01:41:47+09:00) Maven home: /Users/yo1000/.m2/wrapper/dists/apache-maven
これはJava Advent Calendar 2016 ¥- Qiitaの10日目の記事です。 9日目の記事はdeaf_tadashiさんのマイクロベンチマークツール、JMHについて でした。 11日目は @leak4mk0 さんです。 このページについて DBUnitを使用して、BLOB型カラムにテストデータ(主に画像とか、PDF)を入れたいときには、 XMLでそのファイルを指定する仕組みが用意されています。 が、今回は、EXCELからBLOB型カラムにテストデータを入れる方法を紹介したいと思います。 DBUnitを使ったことがない方は、使い方については、日本語情報が沢山あるので、 ぐぐってみてください。 書く目的 BLOB型カラムのデータをインポートする際に躓いたので、その共有です。 レアリティの高いシチュエーションだとは思いますが、 こんな方法でいけるぜ!というのを知っていただけれ
Spring では、テスト対象の内部だけでなく、テストそのものの前後にもトランザクションを使用できます。テストデータを作成するライブラリのひとつである、DBUnit を使用することで、テストデータの挿入についても、同じトランザクションで管理できるようになります。 テスト対象メソッドの Propagation 設定にもよりますが、多くの場合設定されているであろう Propagation.REQUIRED (@Transactional アノテーションでのデフォルト設定値) を使用していれば、テストで開始したトランザクションを、テスト対象にも引き継ぐことができ、テスト対象メソッドの内部でデータに変更が生じたとしても、テスト終了時にこの変更をロールバックすることができるようになります。 環境 Java 1.8.0_91 Maven 3.3.9 (Maven wrapper) Spring Boo
結論 PHPUnit_Extensions_Database_TestCaseクラスの初期化処理では、外部キー制約があるとうまく初期化できない場合がある オプションでTRUNCATE処理にCASCADEを追加できるが、外部からこのオプション引数は制御できない 引数なしで実行しているメソッドをオーバーライドすることで、CASCADEするようにしてやる class HogeTest extends \PHPUnit_Extensions_Database_TestCase { protected function getSetUpOperation() { // 引数にtrueを渡すように上書き return \PHPUnit_Extensions_Database_Operation_Factory::CLEAN_INSERT(true); } public function setUp()
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 今回は、プログラム開発では大活躍!単体テストで使用できるフレームワーク、「DBUnit」の使い方を紹介します。 DBUnitとは、Javaで使用するテスティングフレームワークの一つなのですが、筆者が勉強した感じでは、記事が古かったり、それだけで完全に事足りるwebが少ないように見受けられたので、筆者の備忘と、この記事をご覧いただいた方への共有も兼ねて、こちらにまとめておきます。 参考としてwebに資料を記載いただいている優しい方も、たくさんいらっしゃるんですけどねorz 1. DBUnitとは 先にも記載しましたが、DBUni
JUnit にて Flyway を起動した際、schema_version テーブルが存在しないと表示される現象についてJUnitDBUnitFlywaySpringBoot 概要 こちらの記事 を拝見させていただき、これは便利と、JUnit から DBUnit を使用してテストすることを考えました。しかしながら、下記構成にて JUnit からテストを実施した際、Flyway にて作成されているはずの、schema_version テーブルを DBUnit が確認できない現象が発生しました。 Spring Boot JUnit |---> Flyway (マイグレーションの DDL を実行) |---> DBUnit (単体テスト用の CSV を投入) 現象の詳細 DBUnit で使用する TransactionAwareDatasourceProxy をコンテナに登録しています。 @Te
追記 2017/11/2 RestTemplateのテスト追加 この資料について Spring bootを使ったプロジェクトをやっていて、その際にテストどう書くねんってなったからまとめた この資料では下記のテストの仕方をまとめた Service(POJOっぽいやつ) Controller(Mockかして順序とかの担保) Repository(CSVでテストデータ用意してテスト) リクエストパラメータのテスト(バリデーションを実際にしてみてテスト) RestTemplateをつかって外部のAPIたたくクライアントクラスのテスト 機能テスト(実際に叩いてテスト) 基本調べて書いたのでもっとこうしたほうがきれいにかけるやで、っていうのがあればぜひ 実行環境 Java 1.8 SpringBoot 1.5.7.RELEASE 詳しくは下記のリポジトリ参照 ここでやったことのコード spring-b
こんにちは。10分で生産的なミーティングができるWeb会議ツールminmeetingを開発している伊勢川です。 本日は若干マニアックだけど誰もが一度はハマったことがある、ExcelでCSVを扱う際の文字化け問題を解消するもう一つの方法を紹介します。 DBUnitを用いてテストをしている場合、CSVでデータを作るのが便利です。データが少ないうちはテキストエディタで十分なのですが、テストケースが増えてくるとExcelのオートフィルや関数の機能を使ってデータを作りたくなってきます。 ところがExcelを使うと、データの中に日本語が入っていると文字化けしてしまいます。また、関数を使った瞬間に拡張子をxlsxに変えろとか、つれないことを言ってきます。WindowsではBOMをつければ開けますが、Macでは文字コードまで変えなければならず、だんだん面倒くさくなってきます。 最近気づいたのですが、このよ
DBUnitを使用した結合試験データの積み込み 先日JBehaveを使った試験の自動化について書きましたが(JBehave+Maven+Eclipseを使った結合試験の自動化)、データベースの準備はテキストでやっていくのはきついので、DBUnitでデータを積み込みます。 準備 データをExcelで定義する 以下のルールを守るだけです。 1ファイルに複数のテーブルの情報を定義できるため、シナリオ試験のデータをまとめるのにちょうど良いです。 1テーブル1シート 1ファイルには複数のテーブルの情報を定義できる シートの名前はテーブル名にする 1行目はカラム名を記入する xls形式で保存 例)Excelでのデータ定義 pom.xmlの修正 DBUnitを使うための依存情報を追加します。 apache poiはかならず3.2を使います。 ... <dependencies> ... <depende
ネットの検索結果でチラチラとは見ていたのですが、この度初めて自分でもDBUnitを使ってみました。ネット上のサンプルコードをほとんどそのまま実行しただけですが、私の手元でも簡単にユニットテスト用のDBとデータを準備することができました。 従来、H2 DatabaseはRunScriptで初期化用のスキーマを流し込んでいたのですが、これならJDBCドライバを選ばない気がします。 ※ 他のJDBCドライバでH2 DatabaseのINIT=RunScript相当の機能が可能なのか知りません。 ##環境 DBUnit 2.5.1 JUnit 4.12 ユニットテストのコード(パクリですが) 以下のような感じです。Excelファイルもデータソースとして使える点は、仕事でプログラムを作る人にとってかなりのアドバンテージな気がします。 import java.io.File; import org.j
FuelPHP Advent Calendar 2015の6日目を担当する@wataです。昨日は@sharkppさんのNestedSets Model を使って FuelPHP 用コメントボックスパッケージを作った話でした。 本記事ではFuelPHPを用いた開発におけるユニットテスト、特にデータベースまわりに関するテストケースの作成について、保守性の面から色々考えたあれこれを書かせていただければと思います。 FuelPHPのテスト事情 突然ですがみなさん、テスト書いてますか? PHPはとっても柔軟(?)な言語なので、品質を担保するためにはいつでも実行可能で、軽量なテストによって、動作が常に正しいことを検証できることが望ましいとされています。 PHPの場合、テスティングフレームワークとしてはPHPUnitが有名であり、多くのテスト支援のための機能が実装されています。FuelPHPも例外なくP
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く