*

VisualStudioで実行した単体テストの結果の出力(1)-ファイルへの出力

公開日: : 最終更新日:2020/05/24 テスト, 徒然, 自動化, 開発

どもです。

最近、VisualStudio/C#でよく開発しています。
その際に、当然ですが単体テストを行ってカバレッジを測定する、ということを行います。
(VisualStudio/C#でのカバレッジ測定については、コチラを参照して下さい。)
しかし、このやり方でも「効率悪いなぁ」と感じる箇所がありました。
今回のエントリでは、この「効率悪い」と感じた点と、その改善について書いていきます。

0.前提:開発環境

お約束ですが、本エントリの内容を確認した開発環境を示します。
(ここに表を挿入)

項目スペック
OSWindows10 Pro(ver.1903)
CPUi7-8700
開発環境VisualStuioCommunity2019
Version 16.5.1
.NET Framework4.8.03752
メモリ16GB

なお、本エントリで例として挙げている単体テストは、前回のエントリで公開したツールで実行した単体テストの一部になります。

1.問題点

現在使用しているVisualStudioCommunity2019では、優秀なテストツール/フレームワークが使用可能です。
機能追加やバグの修正に伴うリグレッションテストも、ボタン一つで実行可能です。
テスト結果も、一目で確認ができます。
test_result_of_vs_001
また、カバレッジ測定についても別途ツールを適用することで過去のエントリの通り確認ができます。
非常に素晴らしいです。

しかしこの環境でも、「1つだけ」問題(と私が感じている)点があります。
それは、「テスト結果の出力」です。
VisualStudio上でテストを実行した際は、「テストエクスプローラ上」で「成功/失敗」を確認できます。
しかし、「成功/失敗」はこの「テストエクスプローラ上」でのみ確認可能です。
即ち、(いちいち)VisualStudioを起動しないと確認ができません。
(メンドクサイ)
これが「問題」(と私が感じている)点です。

2.解決方法

この問題ですが、VisualStudioを起動せずにテストが実行できれば解決できると考えました。
そのための方法を調べよう…と思ったところ、テストを実行する方法が既に明らかになっていました。
その方法は、VisualStudio/C#でのカバレッジ測定エントリで書いていました。
すなわち、「vstest.console.exe」で単体テストを実行する、という方法です。

2.1.単体テストの実行

以下のようなバッチファイルを作成します。

このバッチファイルをダブルクリックなどで実行することで、VisualStudioを起動することなく単体テストの実行が可能です。
(なお、VisualStudioのインストール先については、自分の環境に合せて変更してください。)
コマンドラインで実行した場合には、下記のような結果が得られます。

なおテストが失敗する場合には、以下のような出力になります。

このように、テストが失敗した場合でも、そのことが分かるような出力を得ることができます。

2.2.単体テストの実行結果の出力

VisualStudioの単体テストが、コマンドラインから実行できることが分かりました。
また、テスト結果も表示できています。
そこで次に、このテスト結果をファイルに出力します。
というか、してみたくなります。
テスト結果をファイルに出力するためには、「vstest.console.exe」に以下のような引数を与えます。

(上記の引数の詳細、およびそれ以外の引数については、Microsoftのページを参照して下さい。)
「LogFileName」には、任意のファイル名を設定できます。
この引数を追加して上記バッチに追記して実行すると、TestResultsフォルダ内に指定したファイルが生成されます。
このファイルの中に、各テストの実行結果が記録されています。
「UnitTestResult」タグの「outcome」属性の値が「成功/失敗」に対応しており、この値が「Passed」なら「成功」、「Failed」なら「失敗」となります。
加えて「失敗」の場合には、テストのどのASSERTで失敗しているかも表示されます。

3.まとめ

今回のエントリでは、VisualStudioでの(C#の)単体テストをVisualStudioを起動せずにバッチファイルから実行し、結果をファイルに出力する方法を書きました。
この方法により、本エントリの最初で提起した問題を十二分に解決できた、効率の悪さを完全に改善できたとは言えないと思います。
そのため、次回のエントリでは、また「完全に改善できていない」と思われる点を改善する方法について書こうと思います。

ではっ!

続き:

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

関連記事

Qt_logo_2016

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

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

記事を読む

toppers

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

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

記事を読む

RasPi_Qt

Rasbianの新しいバージョンが出たので、クロス環境を更新してみた。

どもです。 RaspberryPiのOS:Raspbianの新しいバージョンが、少し前(…なの

記事を読む

OpenCvLogo

OpenCvによる画像サイズ変更

どもです。 最近、カメラの動画をOpenCvで加工する、ということに挑戦し始めました。 しか

記事を読む

think_about_utest

単体テストの効率化を考える(2)-スタブの戻り値

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

記事を読む

no image

PC自作2019 – Windows10への移行

どもです。 突然ですが、PCを交換しました。 1. 何があった!? これまで自作PC(

記事を読む

MY_MFC_LOGO

MFCプログラミング(4):Enter(ESC)キーでダイアログが閉じないようにする

どもです。 今回は、キーボード入力の処理、特にEnterキー/ESCキーでダイアログが閉じられるこ

記事を読む

no image

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

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

記事を読む

GitHub

batファイルによるGitリモートリポジトリへのpush

どもです。 突然ですが、普段、コマンドラインからgitコマンドを利用して行っているリモートリポジト

記事を読む

eclipse-juno-logo

C言語でEV3開発(2)

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

記事を読む

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

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

どもです。 前々回、前回と、VisualStudio/C#での単

think_about_utest
VisualStudioで実行した単体テストの結果の出力(2)-出力ファイルの読める化

どもです。 前回の続きです。 前回は、VisualStud

think_about_utest
VisualStudioで実行した単体テストの結果の出力(1)-ファイルへの出力

どもです。 最近、VisualStudio/C#でよく開発してい

think_about_utest
単体テストの効率化を考える(6)-スタブの自動生成ツール

どもです。 「単体テストの効率化について考える」の6回目です。

think_about_utest
単体テストの効率化を考える(5)-スタブの自動生成への入力

どもです。 「単体テストの効率化について考える」の5回目です。

→もっと見る

PAGE TOP ↑