Voglio testare un pezzo di codice che restituisce un oggetto.Test unitario ... come migliorarlo
Io uso NUnit e in una classe di test, scrivo un metodo per verificare se il mio metodo funziona bene ...
[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);
}
Questo test non funziona perché MyObject
non sovrascrive Equals
metodo, e io don Non voglio sovrascrivere il metodo Equals
solo per scopi di test.
Così ho riscrivere il test come questo:
[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);
}
Ok, funziona ... ma questo test è pertinente? Inoltre, c'è una dipendenza da un file.
È pertinente utilizzare un quadro Mock anziché? E come usarlo?
Grazie!
In realtà si comarison potrebbe essere scritto in una sola riga, ma ha cattiva leggibilità: 'Assert.That (myObjectA, Is.EqualTo (myObjectB) .using ((x, y) => x.Name == y .Nome && x.Titolo == y.Title? 0: 1)); ' –
Restuta