Fight the Future

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

TestNG

@TableAssertでクエリをファイルに書けます

TestNG+DbUnitライブラリであるDbUnitNGで、DbUnitライブラリ@TableAssertでDBとアサートできます - Fight the Future じゅくのblogにある@TableAssertに機能を追加しました。結果をDBから取得するクエリをプロパティファイルに記述できるようにしました。 @…

Google Testing Blog

さらに、Googleは「Google Testing Blog」というBlogをやっていた。 内容もかなり興味深い。 ただ、1エントリの文章量が多く、読むのが遅い僕にはつらい。。。 Google Testing Blog

Google Test Automation Conference

さっきのTestNGの動画で知ったばかりだけど、どうやらGoogleは毎年Google Test Automation Conferenceというのをやってる。 Google Testing Blog: Call for Attendance: GTAC 2008 今年はシアトルで10/23,24にやるみたい。 TestNGの動画は去年のもので、資料…

TestNGのプレゼン

FounderであるCedric BeustのGoogle Test Automation Conferenceのプレゼン。

世界一やさしいTestNGの使い方

JARファイルをダウンロードする TestNGのサイトにいきます。 メニューから「Download」を選びます。 「download TestNG here.」のリンクを押すと最新のJARファイルをダウンロードできます。 ダウンロードしたzipファイルを解凍します。 解凍したディレクトリ…

@TableAssertだと何がいいのか

僕の作っているTestNG + DbUnitライブラリでDBとのアサートをアノテーションで指定できるわけですけど。 @TableAssert(names = "dept", pathname = "insert_expected.xml") @SetUpOperation(pathname = "dept.xml", value = DatabaseOperationType.DELETE_AL…

JUnitは死なず

JUnitはTestNGよりも多く採用され拡張されているものの、TestNGの方が多くの機能を提供し、JUnit用のテスト(スクリプト)を実行することも可能なので、テスト・フレームワークとしてTestNGを選択する方が魅力的な選択に思えるようである。 InfoQ: JUnitは死な…

DbUnitライブラリ@TableAssertでDBとアサートできます

DbUnitNG プロジェクト日本語トップページ - SourceForge.JPで期待値のファイルとデータベースのテーブルをアサートするアノテーションを作りました。 @TableAssertです。 こんな感じ。 @TableAssert(names = "dept", pathname = "insert_expected.xml") @Se…

TestNG eclipseプラグインでのリスナークラス登録の続き

TestNGプラグインのリスナーより順序を前で自分のリスナーを登録したい - Fight the Future じゅくのblogで困っているわけだけど、 こりゃTestNGのソースを変えないと無理かもしれないなあ。 TestNGのeclipseプラグインはTestNGクラスではなくサブクラスのRe…

DbUnitライブラリで期待値nullはこう表します

<dataset> <DEPT DEPTNO="10" DNAME="[null]" LOC="NEW YORK"/> </dataset> [null]と記述すると、nullとして扱います。 AssertionHelperクラスを使ってアサートする場合です。 内部的にはReplacementDataSetを使っています。

DbUnitNG0.3リリース!

DbUnitNG プロジェクト日本語トップページ - SourceForge.JP 期待値ファイルからデータセットを作成する際に、ReplacementDataSetを使用するようにしました。 @SetupOperationにおいてテストスイート全体でデフォルトのでDatabaseOperationを設定できるよう…

TestNG ML(英語)に投げてみた

TestNGプラグインのリスナーより順序を前で自分のリスナーを登録したい - Fight the Future じゅくのblogがどうしてもわからないので、 testng-users | Google Groups に投げてみた。 Hi, With TestNG eclipse plugin, I add my listener class. Then listen…

TestNGプラグインのリスナーより順序を前で自分のリスナーを登録したい

eclipseのTestNGプラグインを利用してデバッグ実行すると、 リスナーは以下の順で Listに入っていた。 [org.testng.remote.strprotocol.RemoteMessageSenderTestListener@50cf54, org.testng.reporters.TextReporter@5bc8c9, org.dbunitng.listeners.DbUnitN…

@TableAssertでアサートしたかったけど、失敗

誰か助けてください>< 期待値とDBのテーブルを比較するようなテストなら、アサートもアノテーションでできるようにしようと考えた。 こんな感じで。 @TableAssert(names = "dept", pathname = "insert_expected.xml", queries = "select dname, deptno, loc …

DbUnitで読み込むファイルの値にnullを設定する

DbUnitでは初期値や期待値をXMLやExcelに記述することができる。 ただ、nullを表現したいときは困ってしまう。 たとえばXMLで次のように記述したとする。 <dataset> <HUMAN NAME="jyukutyo" NULLCOLUMN="" /> </dataset> この場合、NULLCOLUMNはnullではなく空文字となる。 本当にそうなるかサンプルプログラムで読み込…

DbUnitでSQL文の結果をそのままデータセットにする

public static void main(String[] args) throws Exception { JdbcDatabaseTester tester = new JdbcDatabaseTester( "com.mysql.jdbc.Driver", "jdbc:mysql://127.0.0.1/testframework", "root", "root"); QueryDataSet dataSet = new QueryDataSet(tester.…

TestNGでXMLを使わずにテストを実行する

TestNGではtestng.xml(ファイル名は任意)というXMLを使ってテストを実行するのですが、 XMLを使わずにプログラミングでテストを実行することもできます。 public static void main(String[] args) { TestNG testNG = new TestNG(); testNG.addListener(new D…

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を自動…

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…