Kezdőoldal » Számítástechnika » Programozás » [C#] XML dokumentumot előállít...

[C#] XML dokumentumot előállító osztály unit tesztelése (? )

Figyelt kérdés

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?


2017. szept. 16. 19:10
 1/5 anonim ***** válasza:
Én külön letesztelném a metódusait, mivel azok számítanak unitoknak. A kimenetét ellenőrizni már integration, amire elég egyetlen teszt is, amit stringként beégetnék a kódba.
2017. szept. 16. 22:01
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:
Azzal az a gond, hogyha mondjuk beállítok egy property-t (ami a kérdésnél lévő interfésznél nem látszik), akkor a property getter tagja simán visszamondhatja, hogy márpedig jó az értéke. És az XML-be mégsem kerül bele.
2017. szept. 16. 22:58
 3/5 anonim ***** válasza:
vagy kimockolod a fajlba irast.
2017. szept. 17. 12:23
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:

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.

2017. szept. 17. 13:33
 5/5 anonim ***** válasza:
Értelem szerűen írsz tesztet a propertyre is. Ha sok van belőlük, akkor legeneráltatod az eseteket vagy írsz valami általános logikát rá.
2017. szept. 18. 06:58
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!