C#でUnitテスト方法
はい、hebiです。
今回はVisual Studio 2022 C# .NET 5.0でのUnitテスト方法を記事にしたいと思います。
テスト対象のクラスを準備
テスト対象となるMessageクラスを準備しましょう。
public class Message
{
public enum MessageType
{
message1,
message2
}
private readonly Dictionary<MessageType, string> messageList = new System.Collections.Generic.Dictionary<MessageType, string>()
{
{MessageType.message1, "Hello World!" }
};
public Message()
{
}
/// <summary>
/// メッセージを取得します
/// </summary>
/// <param name="messageType">メッセージタイプ</param>
/// <returns>メッセージ</returns>
public string GetMessage(MessageType messageType)
{
if (messageList.ContainsKey(messageType))
{
return messageList[messageType];
}
return "";
}
/// <summary>
/// メッセージを追加します
/// </summary>
/// <param name="messageType">メッセージタイプ</param>
/// <returns>メッセージ</returns>
public void AddMessage(MessageType messageType, string message)
{
if (!messageList.ContainsKey(messageType))
{
messageList.Add(messageType, message);
}
else
{
UpdateMessage(messageType, message);
}
}
/// <summary>
/// メッセージを更新します
/// </summary>
/// <param name="messageType">メッセージタイプ</param>
/// <returns>メッセージ</returns>
protected virtual void UpdateMessage(MessageType messageType, string message)
{
messageList[messageType] = message;
}
}
準備したMessageクラスの以下の関数をUnitテストしていきます。
- public GetMessage
- publuc AddMessage
- protected virtual void UpdateMessage※
プロジェクト構成は以下となります。
今回はコンソールアプリケーションプロジェクトにMessageクラスを追加しました。
テストプロジェクトの作成
Messageクラスをテストするためのテストプロジェクトを作成します。
Visual Studioを起動し、新しいプロジェクトの作成にて、XUnitテストプロジェクトを選択し、次へボタンを押下します。
テストプロジェクトが作成されるため、自動で生成されるUnitTest1クラス名を試験対象のクラス名に変更します。
ソリューションを右クリックし、「追加」-「既存のプロジェクト」を選択し、試験対象のプロジェクトを追加します。
依存関係を右クリックし、プロジェクト参照の追加を選択し、試験対象のプロジェクトを追加します。
「表示」-「テストエクスプローラ」を表示しておきます。
以上でテストプロジェクトの作成完了です。
テスト項目の作成
GetMessage関数のテストを作成したいと思います。
指定したmessageTypeがmessageListに存在する場合と存在しない場合の2件を実施する必要があるため、2件の項目を作成します。
取得成功パターンを作成します。
[Fact]
public void GetMessage1()
{
// 取得成功パターン
var message = new Message();
string result = message.GetMessage(Message.MessageType.message1);
Assert.Equal("Hello World!", result);
}
[Fact]
public void GetMessage2()
{
// 取得失敗パターン
var message = new Message();
string result = message.GetMessage((Message.MessageType)3);
Assert.Equal("", result);
}
以上でGetMessageのテスト項目作成完了です。
テスト実行
GetMessageのテストを実行してみましょう。
テストエクスプローラからテストを行いたい項目を選択し実行を押下します。
今回はGetMessageのすべての項目を実行したいためMessageTestから実行します。
テストが完了すると、以下のように成功を示す緑アイコンとなります。
仮に返却する文字列が誤っている場合は、Assertでエラーとなります。(返却文字列をHallo Worldに変更して実行)
最後に
C#でのUnitテスト方法でした。次回はprivateプロパティの確認方法やprotected関数のテスト方法を記事にしたいと思います。
最後までお読みいただきありがとうございました。