我想測試一段返回對象的代碼。單元測試...如何改進它
我使用NUnit和測試類,我寫來測試我的方法能正常工作的方法...
[Test]
public void GetMyObjectFromLog()
{
string _xmlFilePath = @"C:\XmlFile.xml";
MyObjectParser _myObjectParser = new MyObjectParser();
MyObject _mockMyObject = new MyObject
{
Title = "obj",
Name = "objName"
}
MyObject _myObject = _myObjectParser.GetMyObjectFromLog(_xmlFilePath);
Assert.AreEqual(_mockMyObject , _myObject);
}
此測試不起作用,因爲MyObject
不會覆蓋Equals
方法,和我不爲了測試目的,我們不想重寫Equals
方法。
所以我重寫這樣的測試:
[Test]
public void GetMyObjectFromLog()
{
string _xmlFilePath = @"C:\XmlFile.xml";
MyObjectParser _myObjectParser = new MyObjectParser();
MyObject _myObject = _myObjectParser.GetMyObjectFromLog(_xmlFilePath);
Assert.AreEqual("obj", _myObject.Title);
Assert.AreEqual("objName", _myObject.Name);
}
好,它的工作原理......但這個測試是相關的?此外,還有一個依賴文件。
是否恰當使用模擬框架來代替?以及如何使用它?
謝謝!
其實你comarison可以寫成一行,但它的可讀性差:'Assert.That(myObjectA,Is.EqualTo(myObjectB)。使用((x,y)=> x.Name == y .NAME && x.Title == y.Title 0:1));' –
Restuta