次のように、配列用の拡張メソッドをC#でbyte16進文字列にエンコードする拡張メソッドを記述したとします。
public static class Extensions
{
    public static string ToHex(this byte[] binary)
    {
        const string chars = "0123456789abcdef";
        var resultBuilder = new StringBuilder();
        foreach(var b in binary)
        {
            resultBuilder.Append(chars[(b >> 4) & 0xf]).Append(chars[b & 0xf]);
        }
        return resultBuilder.ToString();
    }
}
次のように、NUnitを使用して上記のメソッドをテストできます。
[Test]
public void TestToHex_Works()
{
    var bytes = new byte[] { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };
    Assert.AreEqual("0123456789abcdef", bytes.ToHex());
}
Extensions.ToHexプロジェクト内を使用する場合はFoo.Do、次のようにメソッドを想定します。
public class Foo
{
    public bool Do(byte[] payload)
    {
        var data = "ES=" + payload.ToHex() + "ff";
        // ...
        return data.Length > 5;
    }
    // ...
}
次に、のすべてのテストはFoo.Doの成功に依存しTestToHex_Worksます。
C ++でフリー関数を使用しても結果は同じです。フリー関数を使用するメソッドをテストするテストは、フリー関数テストの成功に依存します。
どうすればこのような状況に対処できますか?これらのテストの依存関係をどうにかして解決できますか?上記のコードスニペットをテストするより良い方法はありますか?
toHex(またはスワップ実装)を簡単に使用できないことです。それを除いて、すべてがうまくいきます。16進数に変換するコードがテストされました。テストされたコードをユーティリティとして使用して、独自の目標を達成する別のコードがあります。
                
Then all tests of Foo.Do will depend on the success of TestToHex_works- そう?他のクラスの成功に依存するクラスはありませんか?