正在测试的代码:
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
的以下值:
但是,如果我再次运行“Pex Explorations”,在第二次执行之前没有对生成的测试,现有测试项目代码或主项目进行任何更改,那么只有4个测试被列为生成且测试输入来自项目3(“\ 0 \ 0 \ 0 \ 0”)缺失。
Pex生成的测试文件的源代码仍然有针对这种情况的测试方法,但我不明白为什么Pex Exploration Results中没有列出这种情况。
感谢您的见解。