Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

2008-08-01から1ヶ月間の記事一覧

DbUnitライブラリでデフォルトのDatabaseOperationを指定できます

@SetupOperationでDbUnitのDatabaseOperationを指定できるわけですが、 テストメソッドごとに毎回指定するのは手間なので、 テストスイート全体でデフォルトを設定できるようにしました。 接続情報と同様に、 testng.xmlか@DbUnitNGアノテーションで指定する…

DbUnit + TestNGライブラリDbUnitNGプロジェクトWiki更新しました

DbUnitNG Wiki - SourceForge.JP ブログに書いていたことはすべてWikiに転載してます!

DbUnitライブラリで接続情報をアノテーションにしました

DbUnitNG プロジェクト日本語トップページ - SourceForge.JPで、データベースへの接続情報をアノテーションでも設定できるようにしました。 と同時に、スキーマも記述できるようにしました。 さらに、JDBCのURLから判断して、DbUnitのIDataTypeFactoryを自動…

幸か不幸か、家でも技術を磨けてしまうこと

僕もソフトウェアエンジニアが他業種のエンジニアとちょっと違うなあと思ってたことがまさにこれだった。 例えば車作ってる人が板金や旋盤の技術を高めるというのは、日常業務とほぼ繋がっている上に、そもそも「会社でしか作業できない」という制約があった…

主要なDBのJDBC接続文字列一覧

意外にデータベースベンダーのサイトからすぐに検索できないもんなんだなあ。 なんかサンプルとかメモっぽい感じのやつしか見つからない。 その点MySQLのサイトはきちんとしてる印象。 jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property…

ITestListenerとISuiteListenerの順序

Suite > Testなので。 ISuiteListener ITestListener ISuiteListenerもITestListenerもonStart()とonFinish()があるので、 詳しく書くとこうなる。 ISuiteListener#onStart() ITestListener#onStart() ITestListener#onFinish() ISuiteListener#onFinish()

FEBEがFirefox3に対応!バックアップ取れます

FEBE :: Add-ons for Firefox FEBEはFirefoxのエクステンションとかをバックアップするエクステンション。 バージョン6.0がリリースされて、正式にFirefox3に対応してます。 バックアップとってみたけど、ちゃんと動作しました。 Greasemonkeyのスクリプトも…

エンジニアとして大切な2つのこと

なんか最近思うエンジニアとして大切なこと。 仕事とプライベートに(厳密な)境界線を引かないこと 技術を楽しむこと 技術の勉強は業務時間内にやるべき!とかよい残業とは!みたいな話につながるけど、 厳密に境界線を引きたい人には(システム開発の)エンジ…

DbUnitNG0.2リリース!

テストケースの追加と、バグを修正しました! DbUnitNG プロジェクト日本語トップページ - SourceForge.JP AssertionHelperクラスを使えばラクにアサートすることができます。 List<Dept> deptList = deptDao.listAllDept(); AssertionHelper.assertEqualsOnlyColu</dept>…

DbUnitライブラリ用のサンプルを作成しました

trunk/DbUnitNG/sampleとsampletestディレクトリ以下にあります。 sampleはiBatisを使ったデータベースアクセスアプリです。 なので、DbUnitNGの依存ライブラリに加えてiBatisのライブラリが必要です。 DBはMySQLを使っていますが、他のDBでも動くはずです。…

例外発生テストメソッドに見るテスティングフレームワークの進化

テストにおいては、正しく例外が発生するかもテストする必要がある。 JUnit3の時代は、僕の周りではそのテストの書き方を理解している人が少なかった印象がある。 JUnit3では例外発生テストはこのように書くものだった。 import junit.framework.TestCase; p…

EL${aName}でgetAName()が呼び出せないのはJava Beansの仕様?

タイトルのとおり、ELで${aName}と書いても、BeanのgetAName()は呼び出せない。 これ知ってるんだけど、なんで?けっこう長いこと疑問。何の仕様なんだろ。 Java Beansの仕様でこうなってるのかなあ。 (追記) ひがさんとkoichikさんに教えていただきました!…

TestNGのログを出力するには

クラスパスのルートに「log4testng.properties」を置く。 log4testng.propertiesはこんな風に設定する。 # log4testng will log its own behavior (generally used for debugging this package only). log4testng.debug=true # Specifies the root Loggers l…

TestNGの発音は「てすとえぬじー」ではなかった!

TestNG (pronounced "testing", but derived, one understands, from "Testing, the Next Generation") Next Generation Java Testing - JavaLobby Book Review TestNGと書いて「てすてぃんぐ」と読むようだ。 ちなみに、僕がよく使う発音の調べ方は、「XXX …

ライブラリをソーシャルブックマークしてくれてる人が!

Livedoorクリップでライブラリをブクマしてくれてる人が! 1人だけど、超感激。

TestNG+DbUnitライブラリのパフォーマンス

5000件をBeanのListで取得して、XMLの期待値と比較するパフォーマンステストをやってみました。 こういうのって一概に参考にならないことも多いと思うんですけど、感触だけでも伝えられたらって感じです。こんなテーブルに5000件入れます。 mysql> desc emp;…

DbUnitNG 0.1 リリース!

DbUnitNGのバージョン0.1をリリースしました。 DbUnitのSetUpOperationとTearDownOperatonをアノテーション対応しました。 BeanのListをDbUnitのIDataSetに変換するBeanListConverterを実装しました。 DbUnitのAssertionに対するヘルパークラスAssertionHelp…

MySQLでSQLファイルの読み込み

mysql> source ファイルのパスまたは $ /usr/local/mysql/bin/mysql -u ユーザー名 -pパスワード -f -vvv < ファイルのパス

JQueryでテキストエリアの入力値を取得する

$("#テキストエリアのID").val() サンプル <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script type="text/javascript" src="lib/jquery/jquery.js"> </script> <script type="text/javascript"> $(function(){ $("#trigger").click(function(){ var text = $("#target").val(); alert(text…</meta></head></html>

TestNGで使えるアノテーションの作り方

DbUnit + TestNGのライブラリでは、@SetUpOperationなどのアノテーションを使えるわけですが、これはTestNGでリスナーインタフェースが用意されているおかげです。 TestNGでは、リスナーインタフェースが4つ用意されています。 リスナー 説明 IMethodInterce…

DbUnitライブラリでネストしたBeanをDateSetに変換できます

ライブラリDbUnitNGで、 ネストしたBeanをDbUnitのデータセットに変換できるように対応しました。 ネストしたBeanとは次のようなことを意味してます。 あるBeanのプロパティとして、 別のBeanを持つ 別のBeanをListで持つ 別のBeanを配列で持つ テストコード…

TestNG+DbUnitNGライブラリのテストコードを記述しました

BeanのListからDataSetへ変換する部分について、テストコードを記述しました。 TestNGでテストしてます。 Beanがネストしない(Beanが他のBeanをプロパティとして持たない)限り、 リストをデータセットに変換できるようになってます。 # いくつかバグを修正し…

DbUnitでファイル(XML,Xls)に日付を書くときの書式

DbUnitで期待値をXMLやExcelに記述すると思うけど、 日付の書式は基本的にDate.valueOf()やTimestamp.valueOf()で有効な書式を記述する。 こんな感じ。 <dataset> <datebean javaUtilDate="2008-08-08" javaSqlDate="2008-08-08 15:20:11" timestamp="2008-08-08 15:20:11.000" /> </dataset> 試したけど、java.util.Dateでもjava.sql.Date…

DbUnitのFlatXmlDataSetの注意点

DbUnitのFlatXmlDataSetはXMLからDataSetを生成するときに利用する。 だけど1点注意。 FlatXmlDataSetは1つ目の要素の属性をテーブルのカラムとする。 だから、こういうのはダメだ。 <dataset> <simplebean i="0" /> <simplebean string="" i="1" /> <simplebean string="a" i="-1" /> </dataset> カラムstringをnullにしたいがために、1つめの要素にstring要素を記…

AutoPagerizeにサイトを追加する

AutoPagerizeのスクリプトにサイト情報を追加するだけ。JSON形式で。 { url: '対象とするURL。正規表現で。', nextLink: '次のページへのリンク。XPathで(例://table[@class="bodyline"]/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td[@class="nav"]/d…

TestNGとJUnit4における、テストメソッドへのパラメータの考え方の違い

たとえば数値の引数を2つとって、それを足し算したりかけ算したりするメソッドをテストするとして。 public int add(int a, int b) public int multiple(int a, int b) みたいな。 こういうメソッドをテストする場合、引数のバリエーションを考えてテストす…

君は合成コンストラクタを知っているか!(Java)

シリーズ第3弾! 君は合成メソッドを知っているか!(Java) - Fight the Future じゅくのblog 君は合成フィールドを知っているか!(Java) - Fight the Future じゅくのblog 合成コンストラクタ。つまりコンパイラが自動的に作成するコンストラクタ。 やはりイ…

DbUnitライブラリのWiki更新しました

DbUnitNG Wiki - SourceForge.JP 今までBlogに書いていた、ライブラリの使い方をSourceForgeのWikiにまとめました。 よかったら見てみてください!

BeanのリストをDbUnitのDataSetに変換する

過去のエントリでBeanのListとDbUnitのDataSetの比較をなんとかしたいと思ったわけだけど。 DbUnitの弱点はBeanのListとDataSetを比較できないこと - Fight the Future じゅくのblog BeanのListとDbUnitのDataSetを比較する方法を考える - Fight the Future …

君は合成フィールドを知っているか!(Java)

君は合成メソッドを知っているか!(Java)に続いて第2弾。 前回はMethodクラスのisSynthetic()を調べたわけだけど、 そもそもisSynthetic()はMethodクラスのインタフェースであるMemberに定義されている。 Memberインタフェースを実装するクラスとして、Metho…