Fight the Future

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

@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.…

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>…