Domanda

Ho scritto MOLTI test per un software (che è una GRANDE cosa) ma è stato costruito essenzialmente come test autonomo in C #. Sebbene funzioni abbastanza bene, soffre di alcune carenze, non ultimo il fatto che non stia utilizzando un framework di test standard e finisce per richiedere alla persona che esegue il test di commentare le chiamate ai test che non devono essere eseguiti (quando non si desidera eseguire l'intera "suite" di test). Vorrei incorporarlo nel mio processo di test automatizzato.

Ho visto che la Test Edition di VS 2008 ha l'idea di un "Test generico" che potrebbe fare quello che voglio, ma al momento non siamo in grado di spendere i soldi per quella versione. Di recente ho iniziato a utilizzare la versione VS 2008 Pro.

Questi metodi di prova seguono uno schema familiare:

  • Effettua alcune impostazioni per il test.
  • Esegui il test.
  • Ripristina per il test successivo.

Ciascuno di essi restituisce un valore bool (passa / fallisce) e una stringa fa riferimento a un motivo fallito, compilato se fallisce.

Sul lato positivo, almeno i metodi di prova sono coerenti.

Stasera sono qui seduto a contemplare l'approccio che potrei adottare domani mattina per migrare tutto questo codice di test in un framework di test e, francamente, non sono così entusiasta dell'idea di analizzare oltre 8-9K righe di codice di test a mano per fare la conversione.

Hai avuto qualche esperienza con tale conversione? Hai qualche consiglio? Penso che potrei essere bloccato in cerca di tutto ciò facendo ricerche globali / sostituisce e cambiando le prove a mano.

Qualche idea?

È stato utile?

Soluzione

Se usi NUnit (che dovresti), dovrai creare un nuovo metodo di prova per ciascuno dei tuoi metodi di prova attuali. NUnit usa la reflection per interrogare la classe test per i metodi contrassegnati con l'attributo [Test] , che è il modo in cui costruisce il suo elenco dei test visualizzati nell'interfaccia utente e le classi di test utilizzano NUnit < code> Assert per indicare se sono stati superati o meno.

Mi sembra che se i tuoi metodi di test sono coerenti come dici tu, tutti quei metodi NUnit sarebbero simili a questo:

[Test]
public void MyTest()
{
   string msg;
   bool result = OldTestClass.MyTest(out msg);
   if (!result)
   {
      Console.WriteLine(msg);
   }
   Assert.AreEqual(result, true);

}

Una volta che lo fai funzionare, il tuo prossimo passo è scrivere un programma che usa la riflessione per ottenere tutti i nomi dei metodi di test sulla tua vecchia classe di test e produce un file .cs che ha un metodo NUnit per ciascuno dei tuoi originali metodi di prova.

fastidioso, forse, ma non estremamente doloroso. E dovrai farlo solo una volta.

Altri suggerimenti

Stai per vivere il linguaggio di "Un'oncia di prevenzione vale un chilo di cura". È particolarmente vero nella programmazione.

Non fai menzione di NUnit (che penso sia stato acquistato da Microsoft per il 2008, ma non mi trattenere). C'è una ragione particolare per cui non hai usato NUnit in primo luogo?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top