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

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

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

目次

受講者数No.1!初心者からプロへ導く信頼のスクール

    短期間で習得可能!未経験から実践力を磨く充実のプログラム

    今なら無料相談でAmazonギフトカードがもらえる!

    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をコピーしました!
    目次