为什么运行Pex Explorations导致忽略先前Pex生成的测试方法?

时间:2011-09-21 21:31:50

标签: visual-studio-2010 c#-4.0 pex

正在测试的代码:

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);
}

当我第一次在CheckValidFileWithPex(string content)上运行“Pex Explorations”时,会生成五种测试方法,其中包含content的以下值:

  1. “”
  2. “\ 0 \ 0 \ 0 \ 0”
  3. “测试”
  4. “\ 0 \ 0 \ 0 \ 0 \ 0”
  5. 但是,如果我再次运行“Pex Explorations”,在第二次执行之前没有对生成的测试,现有测试项目代码或主项目进行任何更改,那么只有4个测试被列为生成且测试输入来自项目3(“\ 0 \ 0 \ 0 \ 0”)缺失。

    Pex生成的测试文件的源代码仍然有针对这种情况的测试方法,但我不明白为什么Pex Exploration Results中没有列出这种情况。

    感谢您的见解。

0 个答案:

没有答案