Почему запуск Pex Explorations приведет к игнорированию ранее сгенерированного Pex метода тестирования? - PullRequest
4 голосов
/ 22 сентября 2011

Тестируемый код:

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:

  1. null
  2. ""
  3. "\ 0 \ 0 \ 0 \ 0"
  4. "test"
  5. "\ 0 \ 0 \ 0 \ 0 \ 0"

Однако, если я снова запускаю "Pex Explorations", никаких изменений всгенерированные тесты, существующий код тестового проекта или основной проект до второго выполнения, тогда только 4 теста перечислены как сгенерированные и входные данные теста из элемент 3 ("\ 0 \ 0 \ 0 \ 0") отсутствует.

В исходном коде сгенерированного Pex тестового файла все еще есть метод теста для этого случая, но я не понимаю, почему этот случай не указан в результатах исследования Pex.

Спасибовас за ваше понимание.

...