如果您正在編寫單元測試,那麼它應該檢查您的代碼是否正確編寫,而不是檢查難以複製或可能無法在其他機器上使用的外部問題。所以我認爲你應該閱讀關於依賴注入以及如何在你的測試中做模擬依賴。我可以給你一個容易理解的例子,但請用你的話寫下來。
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進行測試和嘲笑。
謝謝!這似乎是我正在尋找的。我會嘗試 –