読者です 読者をやめる 読者になる 読者になる

Fight the Future

何かを始めたら、半分成功したのと同じ

ITestListenerとISuiteListenerの順序

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

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…

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…

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要素を記…

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

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

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 …

BeanのListとDbUnitのDataSetを比較する方法を考える

DbUnitの弱点はBeanのListとDataSetを比較できないことから考えて、実際に比較する方法を考えようと思う。 方法は2つある。 BeanのListをIDataSet実装オブジェクトに変換する DataSetから比較するBeanのListに変換する 2の方法だと、プリミティブなプロパテ…

DbUnitの弱点はBeanのListとDataSetを比較できないこと

DbUnitを使うにあたって一番問題になることは、Daoから取得したJava BeansのListとExcelの期待値を比較できないことだ。 Excel(XML)の期待値はDbUnitではDataSetとして表す。 だけど、DbUnitのAssertクラスであるorg.dbunit.AssertionクラスではDataSet同士…

TestNGとJUnit4のもっとも大きな違い

TestNGとJUnit4のもっとも大きな違いはテストクラスのインスタンス生成だ。 あるテストクラスに複数のテストメソッドがあるとき、2つのフレームワークはこう振る舞う。 TestNGは(基本的に)テストクラスのインスタンスは1つしか作らない JUnit4はテストメソッ…

DbUnitでDatabaseOperation.DELETEするときのXML

<dataset> <DEPT /> <EMP /> </dataset> のようにテーブルを要素名にしてを列挙するだけでよい。 逆にデータを登録するときにはカラムの値を属性にする必要がある。 <dataset> <DEPT DEPTNO="10" DNAME="ACCOUNTING" LOC="NEW YORK"/> </dept></dataset>

テストをSkipするときはITestListener#onTestStart()は呼び出されない

ITestListenerインタフェースのonTestStartメソッドは、 「Invoked each time before a test will be invoked.」なので(特にwill be invokedに注目)、 dependsOnXXX属性を使っていてテストがSkipされるときはonTestStart()メソッドは呼び出されない。

testng.xmlの<suite-files>

バージョン5.3から追加された要素。 要は他のテストスイートファイルを取り込める。 <suite-files> <suite-file path="ファイルのパス"> </suite-files> </suite-files> ちなみにファイル間のパラメータの継承とかはないそうです。 Indeed, inheritance of parameters in testng.xml files is not supported, for a couple of reasons: I …

DbUnitアノテーション対応の使い方

ソースはhttp://sourceforge.jp/projects/dbunitng/からダウンロードしてもらうとして。 TestNGのテストスイートファイルであるtestng.xmlにデータベース接続情報を記述します。 <parameter name="driver" value="com.mysql.jdbc.Driver"></parameter> <parameter name="url" value="jdbc:mysql://127.0.0.1/データベース名"></parameter> <parameter name="username" value="ユーザー名"></parameter>

TestNGでDbUnitをアノテーション対応するコードをSourceForgeにコミットした

TestNGとDbUnitを連携させ、より簡単にデータベース接続テストを作成できるようにします。たとえば、アノテーションを用いて初期データを投入できます。 SourceForge.JP: Project Info - DbUnitNG

DbUnitのアノテーション対応 ( with TestNG )

こんなのしたくない?? @SetUpOperation(value = DatabaseOperationType.CLEAN_INSERT, pathname = "org/dbunitng/dept-emp.xml") @Test public void verifySelectAllFromDept() { // call target method and assert... } 要はDbUnitのアノテーション対応。…

TestNGとDbUnitを連携したサンプル

TestNGとDbUnitを連携させることで、テストクラスはTestCaseを継承する必要がなくなる。 TestCaseを継承する代わりに、XXDatabaseTesterというDbUnitにあるクラスを使う。 JdbcDatabaseTester DataSourceDatabaseTester DriverManagerからConnectionを作るか…

JavaのテスティングフレームワークはJUnitだけじゃないので

TestNGというテスティングフレームワークがある。 JavaにおけるテスティングフレームワークはもちろんJUnitがデファクトスタンダードだ。 でも、TestNGにもスゴくいいところがある。 TestNG is a testing framework inspired from JUnit and NUnit but intro…

TestNGをeclipseで利用する

ものすごく簡単だ。プラグインを1つ入れるだけだ。 http://testng.org/doc/eclipse.html そしてeclipseのプロジェクトでTestNGのjarをビルドパスに加えるだけだ。 テストの実行もJUnitのときと操作が変わるわけじゃないので、新しい操作を覚える必要もない。…