MacOSX10.3でNSControllerとbinding、MacOSX10.4でCoreDataと来ただけに、今回のLeopardのプレビューはちょっと物足りない感じだったので、自分でCocoaを支援するフレームワークを作ってみることにした。
で、そのフレームワークの詳細は、横に置いておくことにして。
フレームワークを作るさいに問題になることの一つが、テストとデバッグの方法だ。
フレームワークは実行ファイルではないので、単体でテストできないし、デバッガも使えない。だから、フレームワークをテストするためのアプリケーションが別途必要になる。
しかし、だからと言ってGUIバリバリのCocoaなアプリケーションを作ってしまうと、テスト効率が非常に悪いものになってしまう。(まあ、フレームワークの内容にもよりますが)
そこで登場するのがMacOSX10.4から搭載されたSenTestingKitフレームワークだ。これは、一言で言うとJUnitのObjective-C版で、テストケースを書いてターゲットとなるオブジェクトなどの動作をテストするものだ。
XCode2.3でも少しだけ対応してて、「新規ファイルの追加」や「新規ターゲットの追加」で「Objective-C test case class」や「Unit Test Bundle」の追加ができる。test case classをUnit Test Bundleでビルドすると、ビルドフェーズの最後にテストが実行されて、テスト結果がビルドログに出力される。でも、結局ビルドされるのは実行ファイルではなく、Bundleなのでこれだとデバックができない。
そこで、SenTestingKitフレームワークを使ってテキスト版TestRunnerを作って見た。わずか70行程度のプログラムです。
これで、フレームワークのテストができると同時に、動作に問題があればデバッカでデバックできるようになります。フレームワークをデバックモードでビルドしていれば、フレームワーク内部までデバッガで追いかけられます。
で、その現在開発中のフレームワークは、もう少し出来上がったら、公開したいと思います。