[C#] XML dokumentumot előállító osztály unit tesztelése (? )
Sziasztok!
Adva van egy osztály, ami XML dokumentumokat állít elő, és ezt az interfészt valósítja meg:
interface IXmlLyricsWriter {
.. void AddLine(double StartTimeInSeconds, string Text);
.. string BuildXml();
.. void BuildXml(Stream TargetStream);
}
Az előállított XML dokumentum valahogy így fest:
<?xml version="1.0" encoding="utf-8"?>
<Lyrics>
.. <Line Start="00:13.14">First line</Line>
.. <Line Start="00:15.23">Second Line</Line>
</Lyrics>
Ezt kellene unit tesztelni, amire több megoldás is az eszembe jutott:
- String-ként beégetem a kódba, hogy milyen XML fájlt várok el karakterre pontosan. Ezzel csak a baj lesz, mert ha mondjuk encoding="utf-8" helyett encoding="utf-16" kerül be, rögtön bukni fog a teszt, holott a kapott XML dokumentum teljesen jó.
- A kapott XML string-et a test case-ben egy XML feldolgozóval feldolgozom és megnézem, hogy az van-e benne, aminek benne kell lennie. Ez sokkal jobb megoldás, mint az előző, de a hátránya az, hogy lényegében implementálni fogom még egyszer azt a kódot, ami ezt feldolgozza.
- Felhasználom az ilyen dokumentumokhoz korábban megírt feldolgozó osztályomat. Az előállító és a feldolgozó osztály viszont egy assemblyben van, emiatt nem tartom jó ötletnek azzal tesztelni.
- Írok hozzá egy XML Schema fájlt, amit feltöltök valahová az internetre, így az a formai részeket letudná. De ettől függetlenül még így is meg kell néznem, hogy az kerül-e a dokumentumba a test case futása során, aminek be kell kerülnie, szóval megint újraimplementálom a feldolgozómat.
Ti hogy csinálnátok?
A mock-olhatóság már kész van. Semeddig se tart egy olyat írni a unit tesztben, hogy:
[TestMethod]
public void XmlLyricsWriter_AddLine() {
.. IXmlLyricsWriter Writer = new XmlLyricsWriter();
.. Writer.AddLine(15.26, "Sample line");
..
.. using (Stream s = new MemoryStream()) {
.. .. Writer.Build(s);
.. .. s.Position = 0;
.. .. //És innentől kezdve benne van. Az s Stream-et pedig már lehet is olvasni.
.. }
}
De az a kérdés, hogyan lenne érdemes ezt validálni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!