=begin =vbUnit Tips ==bUnitの目的 これからご紹介するvbUnitの背景にはXPという開発手法が存在します。 これからの話の前提として、まず次のページをざっと見ておくとよいかもしれません。 *FAQ *青木淳夫さんのページ その中でも、テスティングについては、下記の目的を達成することができ、かつすぐに取り組みを始めることができると思いますので、すぐにでも始めていただきたいと思います。 *テストの自動実行により、開発のスピードと品質を向上する *回帰テストを常に可能とし、作成PGのデグレードをなくし、既存PG修正時の開発者のストレスをなくす ==入手とセットアップ http://www.vbunit.org/index.html まずは、ここからスタートです。しかし、英語の苦手な方もいらっしゃると思いますので、そのような場合は青木さんのページをご覧ください。 また、「VBUnit(NUnit)利用ガイド」も便利です。 vbUnit3はまだベータ版なので、これら以上の日本語ドキュメントはないと思いますので、簡単に手順を書きます。 セットアップ手順に関しても、青木さんのページに書いてあります。setup.batでdllをレジストリに登録するだけですので、特に問題ないと思います。 セットアップまでの手順についてはこれら以上に書く必要はないでしょう。 ちなみに、この資料もあくまでも取っ掛かりです。実際にやってみるのが一番! ==簡単なプログラムで使用 まず、何を作るかですが、こちらからCOMコンポーネントのサンプルをもらってきました。簡単な計算結果を返すコンポーネントです。 これに対するテストを作ってみます。 (1)KeisanCOM.vbpを開く (2)[ファイル]>[プロジェクトの追加]>[vbUnitTestDLL] (3)vbUnitTestDLLを右クリックして[スタートアップとして設定] (4)[アドイン]>[Run vbUnit TestSuite ...]でテストが正常に動作することを確認 (5)次のようなテストを追加 Public Sub TestTashizan() Dim l_ShisokuKeisan As Object Set l_ShisokuKeisan = CreateObject("KeisanCOM.ShisokuKeisan") m_assert.LongsEqual 5, l_ShisokuKeisan.Tashizan(1, 2), "FailOK Tashizan no test" m_assert.LongsEqual 3, l_ShisokuKeisan.Tashizan(1, 2), "Tashizan no test" Set l_ShisokuKeisan = Nothing End Sub (6)もう一度[アドイン]>[Run vbUnit TestSuite ...] うまくいきましたでしょうか?結果はこのようになると思います。 動作テストの「hello」と、わざと失敗させたexpected:5が表示されたと思います。 それらをクリックすればソースのその行に飛んでいきます。素晴らしい! ==名前付けとファイル構成 上記のようなデフォルトのままでは、そのうち分かりにくくなってしまうので、名前付け規則を作ってその通りに作成することにします。 私がvbUnit2のときに考えていたのは次のようなものですが、今後vbUnit3の特徴を生かして変更するかもしれません。 作成するDLLをprj_package.dllとします(「_」を好まない方がいらっしゃると思いますが、windowsでファイル名・フォルダ名の大文字・小文字はどうも信用できないので、このようにしています)。 prj\package\ prj_package.vbp class1.cls(func1,func2) class2.cls prj\package\test\ test_prj_package.vbp(vbUnit3はスイートのテンプレートを用意してくれたのでそのままvbUnitTestDLL.vbpでよいかも) vbUnitTestSuite.cls(テンプレートのものをそのまま使います) test_class1.cls(Test_func1,Test_func2) test_class2.cls (クラス名はデフォルトのままでなく、クラスごとのほうが分かりやすいように思います。メソッド名は作成プログラムのメソッドが大文字で始まるならば「_」は不要だと思いますが、私は小文字で始めたいのでこのようにしています) vbUnit2のときは、testの中にrun_test.vbpもあったのですが、vbUnit3ではこれが不要になりました。 ここで、二つのプロジェクトをプロジェクトグループにしておくと便利なはずなのですが、時々(おそらくロングファイルネームを使用していると)プロジェクトグループが破損します。 対処に慣れていないと、それまでの作業を無駄にするという結果を引き起こしかねません。 ここだけは面倒ですが、プロジェクトグループファイルはあてにせず、毎回プロジェクトの追加を行って作業をしたほうがよいと思います。 ==テストデータ ==夜間等自動実行 VB用にmake的な動作を実現するアプリケーションもないことはなさそうですが、そんなに難しくないようなので自作します。 (これをVBUnitを使いながら作って見せるとよいのですが、手軽さも大事なのでVBScriptで行きます) 流れとしては、(可能ならば)修正があったテストのコンパイル→プログラムのコンパイル→テストプログラムの実行 ただし、自動コンパイルに関してはVSSとの兼ね合いが問題? ==FAQ的な内容 *エラー時やメッセージボックスを使用した場合に、画面関係がおかしくなる *終了が面倒 ==GUIアプリケーションの場合 =end