Assert.bas

Top / Coding / VBA / ユニットテスト / Assert.bas
 

ページ構成
−Top
  • −Coding
    • +.NET
    • +CUDA
    • +JavaScript
    • +MSOffice
    • +PHP
    • +PowerShell
    • +Python
    • +Ruby
    • −VBA
      • ・.NETFrameworkの使用
      • ・COMコンポーネントの使用
      • ・Closeメソッド
      • +Excel
      • ・FileSystemObject
      • ・Framework
      • ・GitHubで公開されているコード一覧
      • +IEの操作
      • ・INIファイルの読み書き
      • ・MACアドレスの取得
      • +Outlook
      • ・PowerPoint
      • +SelenuimVBA
      • ・SendKeys、SendInput
      • ・TemplateEngine
      • ・VBA7
      • +Word
      • ・Word参考記事
      • ・ウィンドウをアクティブに
      • ・オートコレクト
      • ・クリップボードの操作
      • ・タスクの終了
      • ・ドキュメント自動生成
      • ・ハッシュを求める
      • ・ヒアドキュメントの実現
      • ・メールの作成
      • −ユニットテスト
        • ・Assert.bas
      • ・一歩前へ
      • ・開発者
      • ・公開されているクラス一覧
      • ・人に説明するとき用のメモ
      • ・正規表現
    • +misc
    • +画像処理
  • +Server
  • +memo
  • +misc
  • +カメラ
  • +科学技術
  • +記事
  • +数値解析
最新の10件
2018-01-16 更新
  • misc/Hardware/各種プロセッサの倍精度演算性能
2017-11-27 更新
  • Coding/misc/raspberrypi
2017-11-02 更新
  • Coding/.NET/NuGetパッケージの作成
2017-10-19 更新
  • Coding/MSOffice/VSTO/ThisAddin_Startupに処理を書く問題が起きる
2017-06-16 更新
  • Coding/.NET/VisualStudioビルドイベント
2017-05-28 更新
  • misc/Hardware/タブレット向けCPU/複製
2017-05-25 更新
  • Coding/Python/CloudVision
2017-05-24 更新
  • misc/ロードバイク/サイクルロード/奈良
2017-05-11 更新
  • misc/ソフトウェア/文章/文章校正、作成支援ツール
2017-03-15 更新
  • misc/ソフトウェア/プロジェクト管理ツール

Powered By

b_pukiwiki.official.png

edit

目次関連するページ
  • 概要
  • 最初に:Assert.basって何
  • 使い方
    • 具体例
      • 今回作成した VBAProjectの構成
      • 今回作成したクラス、モジュールの内容
  • Coding/VBA/ユニットテスト
  • Coding/VBA/ユニットテスト/Assert.bas

概要 †

@igeta氏作のAssert.basを利用して
VBAでユニットテストをする方法についてまとめてみた。

↑

最初に:Assert.basって何 †

  • @igeta氏作のVBAライブラリ集(ariawase)の中に入っているライブラリのうちの1つ。
  • けっこう手軽にユニットテストが可能になる
  • 別途ActiveXコンポーネントなどをインストールする必要がないので、導入が容易
    • (ariawase内のいくつかのクラスファイルとモジュールのみに依存)
  • Word, Excel, Accessに対応!!
    • Wordにも対応!!
↑

使い方 †

  • テスト用のクラスを作ったら、クラス名の末尾に "Test" をつける
  • テスト用のクラス内では、テストメソッド名の末尾には "_Test" をつける
    • Suffixに使う文字列は、Assert.basの定義部を書き換えれば変更可
  • 適当なところで、"Assert.RunTestClass New テストクラス名" を実行
    • イミディエイトウィンドウ内にテスト結果(OK/Fail)がまとめて表示される
↑

具体例 †

↑

今回作成した VBAProjectの構成 †

vbapro.png
  • 作成したクラス "Class1"
  • Class1のテストクラス "Class1Test"
  • テストコードを走らせるためのモジュール "Module1"
  • "Assert.bas"
    • Assert.baaを動作させるためariawawseから "Core.bas","Func.cls" もインポート
↑

今回作成したクラス、モジュールの内容 †

以下サンプルコードを記載していますが、
ユニットテストの手順を説明したものではないです。
「TDDするなら、Testクラスを作るのが先だろう」とか、そんなんはええねん。
Assert.bas使ってユニットテストする場合、
こんな形になりますよーっていうのがわかればええねん。

ユニットテストしようとする Class1 はこんなかんじ。

Option Explicit

Public Function Add(a, b)
    Add = a + b
End Function

Public Function Pow(a, b)
    Dim out: out = 1
    Dim i: For i = 1 To b
        out = out * a
    Next
    Pow = out
End Function

んで、Class1のテストクラスであるClass1_Testはこんなかんじ。

Option Explicit
Dim class1 As New class1
    
Public Sub Add_正常系_引数数値_Test()
    Call Assert.AreEqualVal(class1.Add(1, 2), 3)
End Sub

Public Sub Add_正常系_引数文字列_Test()
    Call Assert.AreEqualVal(class1.Add("a", "b"), "ab")
End Sub

Public Sub Pow_正常系_引数正_Test()
    Call Assert.AreEqualVal(class1.Pow(2, 3), 8)
End Sub

Public Sub Pow_正常系_引数負_Test()
    Call Assert.AreEqualVal(class1.Pow(-2, 3), -8)
End Sub

あとは、Module1にこんなコードを書いて実行すればOK

Option Explicit

Sub test()
    Assert.RunTestClass New Class1Test
End Sub

実行結果はこんな感じ

immediate.png

クラスに関しては、以上のような感じにユニットテストができる。
(モジュール内のプロシージャに関しては無理っぽい?)


添付ファイル: filevbapro.png 373件 [詳細] fileimmediate.png 302件 [詳細] filevbaproj.png 151件 [詳細]

トップ   編集 凍結 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索   ヘルプ   最終更新のRSS
Last-modified: 2013-10-22 (火) (1640d)
Site admin: D*isuke YAMAKAWA

PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji. Powered by PHP 5.3.29. HTML convert time: 0.089 sec.