*

VisualStudioで実行した単体テストの結果の出力(3)-テスト実行からレポート生成までをツールで自動化

公開日: : Python, ツール, テスト, 徒然, 自動化, 開発

どもです。

前々回前回と、VisualStudio/C#での単体テストの効率化について書いてきました。
特に前回は、pythonでテスト結果のXMLを解析してHTMLに表示する、という方法を書きました。
今回は、「テストの実行」と「結果をHTMLに変換する」処理を一括で実行するツールを作成したので、それについて記載します。

1.概要図

VisualStudio/C#の単体テストの実行からレポートの生成までの一括実行の処理の流れを、簡単ですが下図に示します。
test_result_of_vs_003_001
簡単ですが流れを解説すると、pythonからVisualStudio付属のツールを用いて単体テストの実施とカバレッジの測定を実施します。
次に、テスト結果とカバレッジを入力に、pythonでHTML形式のレポートを生成します。
生成されたHTMLレポートのページ構成(イメージ)を、下図に示します。
test_result_of_vs_003_002
トップページには、実行したテストの件数と総合的な結果が表示されます。
また、テスト結果の詳細とカバレッジへのリンクも表示されます。
トップページのテスト結果へのリンクを選択すると、単体テスト結果詳細(成功/失敗)のページが表示されます。
トップページのカバレッジへのリンクを選択すると、カバレッジ測定結果のページが表示されます。

2.結果

上記のイメージを実装、実行した結果を下に示します。
まず「/index.html」です。
この画面では、実行したテストの件数と(成功/失敗といった)詳細情報が表示されます。
test_result_of_vs_003_003
各テストの名前をクリックすることで、実行されたテストケースの一覧とそれぞれの結果、および実行した日が表示されます。
test_result_of_vs_003_004
また「Coverage」をクリックすることで、カバレッジの測定結果に遷移します。
今回は、OpenCoverageで生成したカバレッジを表示しています。
test_result_of_vs_003_005

3.設定

さて。
作成したツールの設定について、少し解説します。

3.1.ツールの設定

まず、今回実行した際の設定です。

この通り、XML形式です。
「UnitTest」タグで単体テストで使用する各ツールの設定を行います。
また、各子要素の属性でツールの名前(name)やパス(path)を設定するようにしています。
UnitTestタグの子要素で有効なタグは「Runner」、「Coverage」、および「ReportGenerator」です。
これらの設定を自分の環境に合せて修正してください。
実行するテスト対象は、別ファイルに設定します。
テスト対象を設定したファイルへのパスは、「TestTarget」タグのPath属性で設定します。

3.2.テスト対象の設定

続いて、テスト対象の設定です。
今回のエントリで使用した、テスト対象の設定です。

テスト設定もXML形式です。
「Targets」タグの子要素である「UnitTest」で、実行するテストを設定します。
これは、実行したいテスト毎に作成します。
今回の例では、テストを2つ実行しているので、UnitTestタグを2つ作成しています。
「UnitTest」タグのname属性で、テストを実行する「ファイルの」名前を指定します。
即ち、「Runner」タグで指定したツールに渡すファイルの名前を指定します。
ext属性では、name属性で指定したファイルの拡張子を指定します。
今回の例では、「dll」を設定しています。
path属性には、name属性に指定したファイルの配置場所へのパスを指定します。

4.公開しています

今回作成したツールは、GitHubにて公開しています。
使ってみてください。

5.まとめ

3回にわたって、VisualStudio/C#でのテスト結果とカバレッジ測定の結果を出力する方法を書いてきました。
最終的には、HTML形式による結果の読める化(見える化!?)を実現しました。
これで、テストの実行からレポートの生成までを簡単に、効率的に実行できるようになったかと思います。

ではっ!

関連記事

Arduino_Logo

Arduino nano(中華版)をセットアップしてみた

どもです。 突然ですが、「Arduino nano」互換(なのか?)の中華ボードを手に入れました。

記事を読む

toppers

C言語でEV3開発(20)-超音波センサと安全状態

どもです。 前回は、BluetoothでPCとEv3を接続してコマンドの送受信について書きました。

記事を読む

toppers

C言語でEV3開発(23)-モーターの性能確認

どもです。 今回は、EV3に付属しているモーター(Lモーター/Mモーター)の性能について調べてみた

記事を読む

MY_MFC_LOGO

MFCプログラミング(2):コピー機能の実装

どもです。 前回に引き続き、今回もMFCネタです。 内容は、MFCでの「クリップボードへのデータ

記事を読む

DIY_eye_catch

自宅で電子工作(2)-ラズパイのSPIコネクタ自作

どもです。 今回は、電子工作です。 1.何を作った 今回紹介(?)するのは、Raspber

記事を読む

eclipse_4.3_kepler

elicpse/CDTでのgdbでのソースを追従したデバッグができない問題

どもです。 今回のエントリーは、Eclipse上でgdbを利用したデバッグ中に発生する問題について

記事を読む

raspberry-pi

ライブラリでRasPiのピンにアクセス(1)-ライブラリを作ります

どもです。 これまでこのブログでは、RaspberryPiのGPIOとかSPIを使用したアプリ

記事を読む

Qt_logo_2016

QtでRaspberryPi/GUI開発(2):ためしに時計を作ってみた(其の弐)

どもです。 前回のエントリーでは、ラジオボタンのグループ化と、選択されたボタンの特定方法まで記載し

記事を読む

drawio

よさげな設計ツールをみつけました

どもです。 今回は、設計の際に使用するツールについて記載します。 普段、ソフトの設計を行

記事を読む

RasPi_Qt

QtでRaspberryPi/GUI開発(4):イベントハンドラの設定

どもです。 前回のエントリーで、「タッチスクリーンを買った」と書きました。 今回からは、このタッ

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

arduino_relay_switch_002_ae_g5v_drv_eye_catch
Arduinoでリレースイッチ(2)-AE-G5V-DRV

どもです。 前回の記事では、「フォトカプラリレー」を使用したLチ

tlp222af_001_eye_catch
Arduinoでリレースイッチ(1)-TLP222AF

どもです。 つい先日、やっとのことでリレースイッチを手に入れるこ

c_sharp_eye_catch
外部からMariaDbにアクセスする(2)-C#からMariaDbにアクセスする。

どもです。 前回のエントリで、外部からMariaDbにアクセスす

c_sharp_eye_catch
外部からMariaDbにアクセスする(1)-データベースの設定

どもです。 今回は、Linux上のMariaDbにWindows

think_about_utest
middle_unit
最小…よりも(ほんの)少し大きいテストフレームワーク

どもです。 今回は、単体テストのフレームワークについて書きます。

→もっと見る

PAGE TOP ↑