Toon posts:

[VS2010/W7x64] Verschil in runtime en unittest

Pagina: 1
Acties:

  • Spiral
  • Registratie: december 2005
  • Laatst online: 08:05
Ik heb een unit test met de volgende code

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public static IList<RegionInfo> GetCountryRegionInfos()
{
IList<RegionInfo> countries =
                     (from region in
                            from culture in CultureInfo.GetCultures(CultureTypes.SpecificCultures)
                            select new RegionInfo(culture.LCID)
                       orderby region.TwoLetterISORegionName
                       //Gaat in volgende regel goed in unittest, maar fout @runtime
                       select new RegionInfo(region.TwoLetterISORegionName)).Distinct().ToList();
}

 [TestMethod()]
public void GetCountryCultureInfosTest()
{
            IList<RegionInfo> countries = Util.GetCountryRegionInfos();

            RegionInfo nl = new RegionInfo("NL");
            Assert.IsTrue(countries.Contains(nl));
}

@runtime
public void BuildCombobox()
{
     combobox1.DataSource = Util.GetCountryRegionInfos();
}


Als ik de test uitvoer wordt deze code prima uitgevoerd.
Als ik diezelfde code uitvoer @runtime dan geeft de code terecht aan dat hij van AF (Afghanistan) een specifieke cultuur nodig heeft. Dit kan ik volgen. Nu vraag ik mij af waarom ik deze melding niet krijg in mijn unittest?¿

De oplossing heb ik al, maar ik vraag me af waarom hij niet crasht in de unittest?

To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles


  • mulder
  • Registratie: augustus 2001
  • Laatst online: 27-09 21:27

mulder

ik spuug op het trottoir

En als je in je unittest ipv NL AF test?

oogjes open, snaveltjes dicht


  • Spiral
  • Registratie: december 2005
  • Laatst online: 08:05
mulder schreef op woensdag 27 oktober 2010 @ 11:52:
En als je in je unittest ipv NL AF test?
Dan zal deze inderdaad een exceptie gooien, alleen dan heeft deze bovenstaande functie al aangeroepen. Dit maakt mijn ziens niet uit.

To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles


  • Haan
  • Registratie: februari 2004
  • Nu online

Haan

dotnetter

Spiral schreef op woensdag 27 oktober 2010 @ 12:12:
[...]


Dan zal deze inderdaad een exceptie gooien, alleen dan heeft deze bovenstaande functie al aangeroepen. Dit maakt mijn ziens niet uit.
Ik kan je niet volgen. Je code werkt niet met AF, maar wel met NL als culture. Dit komt ook terug in je unit test die geen fout geeft bij NL, maar wel bij AF. Je hebt ook al een oplossing, wat is dan het punt? 8)7 Logisch dat je unit test een ander resultaat geeft, als de inhoud van de test anders is dan de praktijksituatie (je unit test is dus niet goed eigenlijk)

Kater? Eerst water, de rest komt later
Last.fm profiel


  • Spiral
  • Registratie: december 2005
  • Laatst online: 08:05
Goed als je mijn SP leest dan staat er dat het fout gaat in de static functie GetCountryRegionInfos().
Dat staat helemaal los van wat er gebeurt in de unittest.

Wijzig ik de unittest in bv.

C#:
1
2
3
4
5
6
7
8
9
10
[TestMethod()] 
public void GetCountryCultureInfosTest() 
{ 
            IList<RegionInfo> countries = Util.GetCountryRegionInfos(); 
            foreach(RegioInfo ri in countries)
            {
                 Console.WriteLine(ri.Displayname);
            }
            Assert.IsTrue(true);
}


Hoe nutteloos deze bovenstaande unittest is, is niet van belang. Het gaat erom dat de aanroep op de static funtie correct wordt uitgevoerd en geen exceptie gooit, maar juist @runtime wel.

Dat ik de oplossing heb gevonden betekent voor mij niet dat het klaar is. Ik wil graag bovenstaande gedrag begrijpen. Zie bv: [MySQL] Vreemd resultaat bij alleen kolomnaam opgeven

Bijlage met de solution op RapidShare: http://rapidshare.com/files/427419839/RegionInfoTest.zip

[Voor 5% gewijzigd door Spiral op 27-10-2010 14:00. Reden: Solution toegevoegd via rapidshare]

To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles


  • Korben
  • Registratie: januari 2001
  • Laatst online: 20-09 11:49

Korben

() => {};

Ik vermoed dat het wat te maken heeft met de omstandigheden waaronder je die code runt. Als ik namelijk exact dezelfde code run krijg ik geen enkele exceptie.

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


  • Spiral
  • Registratie: december 2005
  • Laatst online: 08:05
Korben schreef op woensdag 27 oktober 2010 @ 14:01:
Ik vermoed dat het wat te maken heeft met de omstandigheden waaronder je die code runt. Als ik namelijk exact dezelfde code run krijg ik geen enkele exceptie.
Ok welke Visual Studio gebruik je en op welk OS en welk platform. Tegen welk .NET Framework wordt het gecompileerd?

En wellicht ben ik er, denk ik, achtergekomen waarom dit gebeurt.

Mijn UnitTest project kan in VisualStudio 2010 alleen maar met .NET 4.0 geselecteerd worden.
Het RegionInfoTest project is gemaakt in .NET 3.5.

Dan treed deze fout op. Schakel ik het RegionInfoTest project over naar .NET 4.0 dan treed er geen exceptie op.

Schijnbaar zit er wel verschil in de implementatie van het RegionInfo object t.o.v. .NET 4.0 en .NET 3.5

Zie: http://connect.microsoft....or-test-project-in-vs2010

Dus in 2010 moet je TestProject op .NET 4.0 draaien wat dus niet overeen kan komen met je Solution. Dit kan inderdaad verschillen opleveren tussen runtime en de unittest

[Voor 47% gewijzigd door Spiral op 27-10-2010 14:17. Reden: Link toegevoegd van MS Connect]

To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles


  • Korben
  • Registratie: januari 2001
  • Laatst online: 20-09 11:49

Korben

() => {};

Zoals ik al zei, de omstandigheden waaronder je je code runt. Ikzelf draaide het in een console app in Visual Studio 2010, Windows 7 x64, gecompiled tegen .NET 4.
Dus in 2010 moet je TestProject op .NET 4.0 draaien wat dus niet overeen kan komen met je Solution. Dit kan inderdaad verschillen opleveren tussen runtime en de unittest
Tja. Of je solution in z'n geheel upgraden naar 4.0, of niet met 2010 gaan werken.

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?

Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee