Mohu opakovaně zopakovat test jednotky přes kolekce v Visual Studio 2008?

hlasů
0

Mám jednotku testu, kde jsem spustit metodu pro každou položku v kolekci (pomocí foreach). V současné době mám assert na konci foreach otestovat, zda tato metoda vrací správnou hodnotu. To funguje, ale výsledek je test selže, pokud tato metoda selže poprvé. Žádné subsiquent položky ve sbírce jsou testovány.

Rád bych v podstatě spuštění plnohodnotného testu pro každou položku v kolekci. Zkouška se provádí pro každou položku, i když jeden selže. A okno Výsledky testů ukazuje výsledek údaje za každý přejezdu.

Vím, že mohu použít zdroj dat provést test pro každý řádek v databázi, ale to není vhodné v tomto případě. Existuje jiný způsob?

Můj současný testovací vypadá takto:

public void TestXHTMLBlock()
        {
            foreach (XmlNode current in Test_Cases.SelectNodes(Test_Cases/Test_Case))
            {
                XHTMLBlock x = new XHTMLBlock(current.SelectSingleNode(Input).CreateNavigator(), );
                XmlDocument temp = new XmlDocument();
                temp.LoadXml(<Output> + x.sWordML(false) + </Output>);


                XmlDiff diff = new XmlDiff(XmlDiffOptions.IgnoreComments |
                                     XmlDiffOptions.IgnoreDtd |
                                     XmlDiffOptions.IgnoreNamespaces |
                                     XmlDiffOptions.IgnorePI |
                                     XmlDiffOptions.IgnorePrefixes |
                                     XmlDiffOptions.IgnoreWhitespace |
                                     XmlDiffOptions.IgnoreXmlDecl);

                StringBuilder str = new StringBuilder();
                XmlWriter xwrite = XmlWriter.Create(str);

                bool ret = diff.Compare(current.SelectSingleNode(Output), temp.SelectSingleNode(Output), xwrite);
                xwrite.Close();

                Assert.IsTrue(ret, current.SelectSingleNode(Description).InnerText);
            }
        }

Vím, že to vypadá jako hlavní kandidát na XML zdroj dat, ale nemohu dostat, že se do práce. Vstupní tag obsahuje XML, který zdroj dat pokouší analyzovat. To znamená, že nemůže správně přistupovat v mém testu a zdroj dat parser tlumivky na některé z mých vstupního XML. Kdybych byl schopen říci analyzátor zdroj dat XML k léčbě interní XML jako text, který bude fungovat stejně dobře ...

Položena 26/08/2009 v 22:41
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
1

Můžete si dát výsledek testování jednotlivou položku v kolekci a prosazovat po foreach v případě, že kolekce obsahuje něco. Níže je ukázka fragmentu kódu pro ilustraci nápad.

List<Item> errors = new List<Item>();
foreach(Item item in items)
{
   if( string.IsNullOrEmpty(item.Name))
   {
     errors.Add(item);
   }
} 
Assert.IsTrue(errors.Count == 0,"There are items with no name"); 

Chcete-li zobrazit další podrobnosti, pokud test selže, můžete napsat metodu nástroj, který projde kolekce chyby a generuje podrobnou zprávu, kterou pak můžete použít ve vašem ASSERT.

Odpovězeno 26/08/2009 v 22:53
zdroj uživatelem

hlasů
0

Považoval bych za použití StringBuilder a připojením řetězec na každou chybu.

Na konci si můžete zkontrolovat, zda je StringBuilder je prázdná a poté zapsat do konzole / debug / stopa, bez ohledu na vaše jednotky testovací framework automaticky shromažďovat a nechat test selže přes Assert.Fail () nebo podobné

Odpovězeno 26/08/2009 v 22:57
zdroj uživatelem

hlasů
0

Pokud používáte NUnit 2.5.x je ValueSourceAttributemůže být to, co hledáte. Který bude absolvovat celou zkoušku opakovat jednou pro každého člena indikovaná IEnumerable.

Odpovězeno 26/08/2009 v 22:56
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more