如果您正在编写单元测试,那么它应该检查您的代码是否正确编写,而不是检查难以复制或可能无法在其他机器上使用的外部问题。所以我认为你应该阅读关于依赖注入以及如何在你的测试中做模拟依赖。我可以给你一个容易理解的例子,但请用你的话写下来。
public interface IFileReader
{
string ReadFile(string filePath);
}
public class FileReader : IFileReader
{
public string ReadFile(string filePath)
{
return System.IO.File.ReadAllText(filePath);
}
}
所以假设你有一个类VideoMetaDataReader然后在类,你会注入接口的依赖和使用ReadFile的方法来读取。然后在您的测试
[TestFixture]
public class FileReaderTests
{
[Test]
public void ShouldDisplayANiceMessage_WhenFileIsInaccessible()
{
var moq = new Moq.Mock<IFileReader>();
moq
.Setup(x => x.ReadFile(Moq.It.IsAny<string>()))
.Throws<Exception>();
var metaDataReader = new MetaDataReader(moq.Object);
metaDataReader.ReadVideoFile("video.mp4");
Assert.AreEqual(1, meaDataReader.Errors.Count);
}
}
我猜想会有这将返回错误时遇到一个错误的属性,但它取决于你怎么想这样做(我没有想到在这个太多了)。
无论如何,关键是不要测试你的代码没有涵盖什么。你的代码需要做的是在出现异常时显示一条好消息,并且如果你嘲笑接口(这意味着不要调用实际的实现,而是在这个测试中做一些我想做的事),然后执行检查你的代码是否可以处理。顺便说一句,我用nunit和moq进行测试和嘲笑。
谢谢!这似乎是我正在寻找的。我会尝试 –