Тестируемый код:
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)
, пять методов тестирования генерируются сследующие значения для content
:
- null
- ""
- "\ 0 \ 0 \ 0 \ 0"
- "test"
- "\ 0 \ 0 \ 0 \ 0 \ 0"
Однако, если я снова запускаю "Pex Explorations", никаких изменений всгенерированные тесты, существующий код тестового проекта или основной проект до второго выполнения, тогда только 4 теста перечислены как сгенерированные и входные данные теста из элемент 3 ("\ 0 \ 0 \ 0 \ 0") отсутствует.
В исходном коде сгенерированного Pex тестового файла все еще есть метод теста для этого случая, но я не понимаю, почему этот случай не указан в результатах исследования Pex.
Спасибовас за ваше понимание.