Avatar billede powerj Nybegynder
07. oktober 2008 - 16:03 Der er 2 kommentarer

Problem med Assert i Unit Test

Hej,

Jeg forsøger at teste events i VS2008 unit test, og det fungerer egentlig fint nok. Jeg bruger anonyme methoder til at fange min event når den bliver smidt, men jeg kan ikke Assert inde i methoden.

Jeg har lavet en test med en knap, hvor jeg fanger EnabledChanged eventen, og bruger derefter Assert.Fail til at se om eventen bliver fanget korrekt, hvilket virker.
    [TestMethod()]
        public void ButtonTest()
        {
            System.Windows.Forms.Button button = new System.Windows.Forms.Button();
            button.EnabledChanged += delegate(object o, System.EventArgs e)
            {               
                Assert.Fail();
            };
            button.Enabled = false;
        }


Men når jeg gør det i denne test methode, sker der ingenting ved Assert.Fail(), og testen er altid "Passed".
    [TestMethod()]
        public void TilFraBaneTest()
        {
            FlowHandler container = new FlowHandler();
            string a = "";
            string b = _baneId;
       
            container.Start();

            container.DataUpdate += delegate(object sender, FlowHandlerUpdateEventArgs e)
            {
                Assert.Fail();               
            };
        //Fires the DataUpdate event
            container.ManualInput(_baneId);
        }

Håber det er en der ved hvad der går galt
Avatar billede Slettet bruger
07. oktober 2008 - 20:23 #1
Har du prøvet at debugge dig igennem? Der kan du jo indsætte breakpoints og så se om du rent faktisk kommer ind til din Assert.Fail().

Bare for at være helt sikker på at dit event rent faktisk bliver fyret.
Avatar billede powerj Nybegynder
08. oktober 2008 - 09:15 #2
Jeg er helt sikker på at jeg kommer derind.

Jeg har prøvet at ændre lidt på metoden, sp den ser sådan her ud
    [TestMethod()]
        public void TilFraBaneTest()
        {
            FlowHandler container = new FlowHandler();
            string a = "";
            string b = _baneId;
     
            container.Start();

            container.DataUpdate += delegate(object sender, FlowHandlerUpdateEventArgs e)
            {
                a = b;             
            };
        //Fires the DataUpdate event
            container.ManualInput(_baneId);

            Assert.AreEqual(a, b);
        }
Denne bliver "Passed" og den næste her fejler
    [TestMethod()]
        public void TilFraBaneTest()
        {
            FlowHandler container = new FlowHandler();
            string a = "";
            string b = _baneId;
     
            container.Start();

            container.DataUpdate += delegate(object sender, FlowHandlerUpdateEventArgs e)
            {
                             
            };
        //Fires the DataUpdate event
            container.ManualInput(_baneId);

            Assert.AreEqual(a, b);
        }

Så jeg ved at min event bliver grebet. Jeg kan desværre ikke debugge, da jeg får en fejl om at der mangler at blive loadet nogle symbols
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester