VBAでTDD – Ariawase編

本文上広告1



したいこと

VBAでTDDしたい。
VBAで単体テストを行いたい。
VBAでテスト駆動開発をしたい。

これは、VBAのコードのメンテナンス・コードの品質を上げたいという要望と等しいです。

テストの実行方法

今回はVBAのAriawaseを利用して、単体テストを行う手順を書きます。
元は、ClockAhead 開発Blogさんの記事を参考にしました。参考記事作成時間が経っており異なる部分がありますので、記事に記しておきます。

  1. GithubのAriawaseを”Clone or download”ボタンを押して、ダウンロードしてください。(画像の赤囲みの部分・右側)
  2. Ariawaseのダウンロード

  3. .zip解凍して、”Assert.bas”,”Core.bas”, “Func.cls”をご自分のVBEプロジェクトにドラッグ&ドロップしてください。
  4. プロジェクトに追加

  5. そして、記事にあるModule1, Module1Testクラスを作成してください。
  6. 私はここでつまづきましたが、add_正常系_Test()の中にある(変更前)Assert.AreEqualVal ⇒ (変更後)Assert.AreEqual と、Valを削除してください。 (*1)
  7. add_異常系_Test()の関数、三行をコメントアウトしてください。(*2)
  8. 代わりにadd_異常系_Test()の関数として、Assert.AreNotEqualを追加しました。
  9. VBE⇒表示⇒イミディエイトウィンドウを表示
  10. Assert.TestRunnerGenerateと入力して、エンターを押してください。
  11. Assert.RunTestと入力してEnterを押してください。
  12. 成功した場合の画像は以下のようになります。
  13. この後、同じテストを繰り返す場合は、 Assert.RunTest のみ入力してください。
  14. またテストクラスやメソッドを追加した場合は、、Assert.TestRunnerClear を入力して、エンターをを押してください。再度Assert.TestRunnerGenerateとAssert.RunTestを入力してください。
  15. Ariawaseに成功した場合の画面

(*1) どうも、参考記事のころからAriawaseが変更された模様です。
(*2) エラーが発生します。私の環境では、「実行時エラー440: オートメイションエラーです。」が発生していました。

環境

Windows10,Excel2016 にて確認しています。

その他注意点

「実行時エラー’1004’:プログラミングによる Visual Basic プロジェクトへのアクセスは信頼性に欠けます。」が出た場合の対処方法として、以下のように対処してください。
1.ファイル⇒2.オプション⇒3.セキュリティーセンター⇒4.「セキュリティーセンターの設定」ボタン⇒5.「マクロの設定」タブ⇒6.開発者向けマクロ設定の「VBAプロジェクトオブジェクト モデルへのアクセスを信頼する」チェックボックスにチェックを入れて、7.”OK”ボタンを押して、設定を有効にしてください。

実行時エラー’1004’が出た場合の設定

まとめ

C#の人なので、生まれて初めてVBA/VBEを触りましたが、何とか行けた感じでほっとしています。これでテストができるのですが、気になる点として

  • add_異常系_Test()の関数で起こったエラー等
  • テストを忘れないようにする工夫

があります。またこちらに関しては、対応策や何か良い工夫があれば、紹介したいと思います。

2018/06/29追記

実際に、以下の記事で使用したエクセルの中にもそのまま同梱しています。SJISコード取得の関数のテストにTDD使用しています。参考にダウンロードして、テストしてみてください。

したいこと 芝浦自動販売機(KB-155NN-BW)の押しボタン部分のラベルを自作したい。 券売機の透明ラベルを作りたい。 券売機の内...

シェアする

  • このエントリーをはてなブックマークに追加

フォローする