テストの記録を見える化!「Log String(記録用文字列)パターン」の活用法

テストコードを書くとき、実行結果を確認するためのログ出力は重要なポイントです。特に、ユニットテストやデバッグの際に、どの処理が実行されたのかを簡単に追跡できると便利ですよね。

そこで役立つのが「Log String(記録用文字列)パターン」です。本記事では、このパターンの概要とC#での実装方法を、初心者向けに分かりやすく解説します。

目次

Log String(記録用文字列)パターンとは?

Log Stringパターンは、テストの実行中に処理の流れを記録するために、文字列(String)にログを蓄積していくシンプルな方法です。
このパターンを使うことで、デバッグの手間を減らし、期待した処理が実行されているかを簡単に確認できます。

例えば、以下のようなシナリオで役立ちます:

  • メソッドの呼び出し順序を確認したい
  • 複雑な処理の流れをログに記録して可視化したい
  • ユニットテストで期待通りの挙動をしているか確認したい

Log Stringパターンを使うメリット

Log Stringパターンには、以下のようなメリットがあります。

テストのデバッグが簡単になる
→ どの処理が実行されたか一目で分かる

ユニットテストの可読性が向上する
→ 期待値との比較が容易

ログ出力よりもシンプルで扱いやすい
→ 外部ライブラリ不要で導入しやすい

C#での具体的な実装方法

では、実際にC#でLog Stringパターンを使う方法を見ていきましょう。

using System;
using System.Text;

class Program
{
    static void Main()
    {
        StringBuilder log = new StringBuilder();

        ProcessA(log);
        ProcessB(log);
        ProcessC(log);

        Console.WriteLine("ログの内容:");
        Console.WriteLine(log.ToString());
    }

    static void ProcessA(StringBuilder log)
    {
        log.AppendLine("ProcessA 実行");
    }

    static void ProcessB(StringBuilder log)
    {
        log.AppendLine("ProcessB 実行");
    }

    static void ProcessC(StringBuilder log)
    {
        log.AppendLine("ProcessC 実行");
    }
}
ログの内容:
ProcessA 実行
ProcessB 実行
ProcessC 実行

このように、メソッドごとにログを記録することで、処理の順番や実行状況を把握しやすくなります。

Log Stringパターンを活用したユニットテスト

Log Stringパターンは、ユニットテストの中でも特に有用です。
例えば、メソッドの実行順序が期待通りかをテストする場合に使えます。

using System.Text;
using Xunit;

public class LogStringTests
{
    [Fact]
    public void LogString_正しい順序で記録される()
    {
        StringBuilder log = new StringBuilder();

        ProcessA(log);
        ProcessB(log);
        ProcessC(log);

        string expected = "ProcessA 実行\nProcessB 実行\nProcessC 実行\n";
        Assert.Equal(expected, log.ToString());
    }

    private void ProcessA(StringBuilder log)
    {
        log.AppendLine("ProcessA 実行");
    }

    private void ProcessB(StringBuilder log)
    {
        log.AppendLine("ProcessB 実行");
    }

    private void ProcessC(StringBuilder log)
    {
        log.AppendLine("ProcessC 実行");
    }
}

このように、ログの期待値と比較することで、処理の順序を保証するテストが簡単に作れます!

まとめ

最後に、Log String(記録用文字列)パターンのポイントをおさらいしましょう。

  • 文字列(String)を使って処理の流れを記録するシンプルな方法
  • メソッドの実行順序や処理の可視化に最適
  • デバッグやユニットテストの可読性が向上
  • 外部ライブラリ不要で導入が簡単
  • C#ではStringBuilderを使うと効率的
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次