テスト中のコード:
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
。
- ヌル
- ""
- "\0\0\0\0"
- "テスト"
- "\0\0\0\0\0"
ただし、「Pex Explorations」を再度実行すると、2 回目の実行前に、生成されたテスト、既存のテスト プロジェクト コード、またはメイン プロジェクトに変更が加えられていない場合、4 つのテストのみが生成済みとしてリストされ、項目 3 からのテスト入力 ("\ 0\0\0\0")がありません。
Pex で生成されたテスト ファイルのソース コードには、このケースのテスト メソッドがまだ含まれていますが、なぜこのケースが Pex Exploration Results に記載されていないのかわかりません。
あなたの洞察に感謝します。