*

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)-テスト実行からレポート生成までをツールで自動化

関連記事

RasPi_Qt

QtでRaspberryPi/GUI開発(8):pigpioを使用したチャタリング対策の問題の対策

どもです。 だいぶ、間が空いてしまいました。 久しぶりの更新です。 前回のエントリーで、「

記事を読む

no image

C言語でEV3開発(9)-opOUTPUT_SPEEDコマンド

どもです。 今回のエントリーでは、前回に引き続きEV3のモーターを動かしていきます。 ただし、単

記事を読む

GitHub

Windowsでのカバレッジ測定-OpenCppCoverageを使ってみた(2)

どもです。 前回のエントリーで、OpenCppCoverageというカバレッジを測定する、フリーの

記事を読む

think_about_utest

単体テストの効率化を考える(1)-はじめに

どもです。 突然ですが、今回から数回にわたって「単体テストの効率化」についてのエントリになりま

記事を読む

iot_at_home_eye_catch

IoT開発(2)-ESP-WROOM-02で気温測定

どもです。 この記事は、IoT開発(1)-ESP-WROOM-02のセットアップからの続きです

記事を読む

source_trail_eye_catch

Sourcetrailを試してみました

どもです。 つい最近、ソースコードの解析に役に立ちそうなツールを見つけたので、ここで少し紹介をしま

記事を読む

cygwin_my_image

cygwinでstartコマンド

どもです。 このエントリでは、cygwinでWindows/コマンドプロンプトの「start」

記事を読む

GitHub

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

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

記事を読む

iot_raspberrypi_gateway_001_eye_catch

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

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

記事を読む

iot_raspberrypi_gateway_001_eye_catch

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

この記事は、下記の記事の続きです。 IoT開発(6) RaspberryPiをIoTゲートウェ

記事を読む

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 ↑