Fight the Future

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

SQL文からテーブル名にマッチさせる正規表現

.*\s+from\s+(\w+\.)?(\w+).*select * from jyukutyo.emp where empno = 1; select * from emp where empno = 1; だとgroup(1)で「emp」が取れます。 スキーマ名を含める場合はこっち。 .*\s+from\s+(\w+(\.\w+)?).*元ネタはDBUnit Made Easy - O'Reilly ONJ…

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

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

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

主要な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…