*

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形式による結果の読める化(見える化!?)を実現しました。
これで、テストの実行からレポートの生成までを簡単に、効率的に実行できるようになったかと思います。

ではっ!

関連記事

eclipse-juno-logo

C言語でEV3開発(2)

どもです。 今回のエントリーの内容は、前回に引き続き「EV3の開発環境の構築」の追記です。

記事を読む

think_about_utest

単体テストの効率化を考える(3)-スタブの引数

どもです。 「単体テストの効率化について考える」の3回目です。 1回目、2回目はコチラ:

記事を読む

no image

C言語でEV3開発(21)-モーター出力の制御

どもです。 前回は、超音波センサから前方障害物との距離を取得し、それを元に安全状態を判断する、とい

記事を読む

raspberry-pi

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

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

記事を読む

no image

C言語でEV3開発(10)-opOUTPUT_CLEAR_COUNTコマンド

どもです。 前回のエントリーのラストで、「モーターを動かすコマンド」と書きましたが、今回紹介するコ

記事を読む

no image

Objective-CからC++コードを呼び出す

どもどもです。 今回は、突然ながらMacに関係する投稿です。 ソフト関係のことを勉強していて

記事を読む

MindStormControl_SprachScreen

EV3開発サポートツール(1)-C#のユーザーコントロール開発

どもです。 突然ですが、今回はC#に関するエントリになります。 具体的には、C#/WPFで、独自

記事を読む

DIY_eye_catch

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

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

記事を読む

RasPi_Qt

QtでRaspberryPi/GUI開発(5):pigpioを使ってみた

どもです。 RaspberryPiを購入して、LEDも手に入れたのでコレをチカらせてみようと思いま

記事を読む

no image

C言語でEV3開発(17)-コマンドによるTOPPERS/HRP2 EV3RT アプリケーションの制御(コントロール)

どもです。 今回は、TOPPERS/HRP2 EV3RT で作成したアプリをPC上から操作するため

記事を読む

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="">

iot_raspberrypi_gateway_001_eye_catch
IoT開発(12)
RaspberryPiをIoTゲートウェイにする(V)
nginxとuWSGIの連携

どもです。このエントリは、以下のエントリの続きです。 IoT開発(6

iot_at_home_eye_catch
IoT開発(11)
ESP-WROOM-02を長時間駆動させた

どもです。この記事は、下記の記事の続き、「測定可能な期間」の結果発表で

iot_raspberrypi_gateway_001_eye_catch
IoT開発(10)
RaspberryPiをIoTゲートウェイにする(IV)
Appサーバーのセットアップ

この記事は、下記の記事の続きです。 IoT開発(6) Raspb

iot_raspberrypi_gateway_001_eye_catch
IoT開発(9)
RaspberryPiをIoTゲートウェイにする(III)
MariaDBのセットアップ

どもです。今回のエントリは、以下のエントリの続きです。 IoT開発(

iot_raspberrypi_gateway_001_eye_catch
IoT開発(8)
RaspberryPiをIoTゲートウェイにする(II)-ex
MariaDBにPHPからアクセス

どもです。 このエントリは、前回のエントリの追加項目です。 前

→もっと見る

PAGE TOP ↑