<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では文字コードまで変えなければならず、だんだん面倒くさくなってきます。 最近気づいたのですが、このよ
codeceptionで受け入れテストを用意している場合、ソースや受け入れテストを修正するたびにテスト全部が実行されるのは待ち時間がもったいない。 gruntは設定ファイルを作成する必要があるので、「ちょっと気楽に」とは難しい fswatch なら、1linerでディレクトリを監視しながらテストコマンドを実行できます。 ※ fswatch は、0.x と 1.x で書式が違っている模様。 https://emcrisostomo.github.io/fswatch/usage.html fswatch のインストール $ brew install fswatch $ source ~/.zshrc # ロードパスやライブラリの再読み込み $ fswatch --version fswatch 1.7.0 Copyright (C) 2013-2015 Enrico M. Crisostom
「"試験A"から生成された"結果R"に対して"試験B"及び"試験C"を実施する」といった場合、テストを分けて書くことができる。 「データプロバイダ テスト」とググれば、複数の郵便番号まとめてテストしたりする方法とかも出てくる。 メリット 一つの testHogehogeが膨らみすぎるのを防げるほか、"試験A"がこけた場合に自動で"試験B/C"をスキップしてくれたりとっても便利 書き方 @depends で依存するテストを指定する 依存される"試験A"の方ではreturnを記述する そのreturnを @depends を記述した"試験B/C"の引数で受け取る @depends が依存を示すので、@param は書かなくてもOK。 <?php namespace Tests\API; use App\Model\Postalcode; use Tests\TestCase; class Po
わたくし、Ethnaで組まれたレガシーなWEBアプリのプロジェクトにアサインされています。 未だに新機能が追加される現役バリバリのプロジェクトですが さすがに年季の入ったコードも多いので、リファクタも進めています。 今後のメンテナンスを見越して、リファクタついでに これまで全く書かれていなかったユニットテストも書きはじめました。が、 Ethnaのユニットテストについてほとんど情報が出てこない状態だったので 今更ながらまとめてみました。 開発環境 PHP 5.2 Ethna 2.3.7 読むと役立ちそうな人 Ethnaで組まれたアプリでこれからユニットテストを書こうとしている奇特な人。 Simpletest? EthnaにはSimpletestというテスティングフレームワークが組み込まれていて、 それを利用するのが一番楽そうなのですが、以下の理由で見送りました。 テストファイルがプロジェクト
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く