4

テスト中のコード:

public class TestReader
{
    public string Content { get; private set; }

    public void LoadFile(string fileName)
    {
        var content = FileSystem.ReadAllText(fileName);
        if (!content.StartsWith("test"))
            throw new ArgumentException("invalid file");
        this.Content = content;
    }
}

public static class FileSystem
{
    public static string ReadAllText(string fileName)
    {
        return File.ReadAllText(fileName);
    }
}

テスト プロジェクトの Pex メソッド:

[PexMethod]
public void CheckValidFileWithPex(string content)
{
    // arrange 
    var fileName = "test.txt";
    Moles_Example.Moles.MFileSystem.ReadAllTextString =
        delegate(string f)
        {
            Assert.IsTrue(f == fileName); return content;
        };
    // act 
    var test = new TestReader();
    test.LoadFile(fileName);
    // assert 
    Assert.AreEqual(content, test.Content);
}

で初めて "Pex Explorations" を実行CheckValidFileWithPex(string content)すると、次の値で 5 つのテスト メソッドが生成されますcontent

  1. ヌル
  2. ""
  3. "\0\0\0\0"
  4. "テスト"
  5. "\0\0\0\0\0"

ただし、「Pex Explorations」を再度実行すると、2 回目の実行前に、生成されたテスト、既存のテスト プロジェクト コード、またはメイン プロジェクトに変更が加えられていない場合、4 つのテストのみが生成済みとしてリストされ、項目 3 からのテスト入力 ("\ 0\0\0\0")がありません。

Pex で生成されたテスト ファイルのソース コードには、このケースのテスト メソッドがまだ含まれていますが、なぜこのケースが Pex Exploration Results に記載されていないのかわかりません。

あなたの洞察に感謝します。

4

0 に答える 0