2010-05-13 14 views
18

Sto provando a scrivere un metodo semplice che riceve un file e lo esegue utilizzando NUnit. Il codice sono riuscito a costruire usando fonte di NUnit non funziona:Come eseguire i test NUnit dal codice C#

if(openFileDialog1.ShowDialog() != DialogResult.OK) 
{ 
    return; 
} 

var builder = new TestSuiteBuilder(); 
var testPackage = new TestPackage(openFileDialog1.FileName); 
var directoryName = Path.GetDirectoryName(openFileDialog1.FileName); 
testPackage.BasePath = directoryName; 
var suite = builder.Build(testPackage); 

TestResult result = suite.Run(new NullListener(), TestFilter.Empty); 

Il problema è che continuo a ricevere un'eccezione lanciata da builder.Build affermando che l'assemblea non è stata trovata.

Cosa mi manca? Esiste un altro modo per eseguire il test dal codice (senza utilizzare Process.Start)?

+0

Per essere onesti, non so su questo modo di test. Indovinare il cieco, hai provato a eseguire questo test attraverso la GUI NUnit, o verificato se avevi tutte le dipendenze referenziate nel tuo progetto, o forse se l'assembly si trova dove l'eccezione dice che non può trovarlo? Una classe di test con NUnit deve avere l'attributo [TestFixture()] e i metodi di test l'attributo [Test()], utilizzando l'importazione NUnit.Framework. –

risposta

27

aggiungendo la seguente riga all'inizio, istituisce il quadro NUnit e potrebbe aiutare a:

CoreExtensions.Host.InitializeService(); 

Un altro modo "facile" per eseguire NUnit test a livello di codice sarebbe:

TestPackage testPackage = new TestPackage(@"C:\YourProject.Tests.dll"); 
RemoteTestRunner remoteTestRunner = new RemoteTestRunner(); 
remoteTestRunner.Load(testPackage); 
TestResult testResult = remoteTestRunner.Run(new NullListener()); 

È è necessario fare riferimento ai seguenti assembly:

  • nunit.core.dll
  • nunit.core.interfaces.dll

E, naturalmente, il nunit.framework.dll deve essere nella cartella con il montaggio di prova;)

+1

Qualcuno di queste cose è documentato? Mi piacerebbe implementare qualcosa di simile, ma preferirei RTFM per vedere quali opzioni sono disponibili per me – Andy

+2

Non ho trovato documentazione e ho dovuto aggirare il [codice sorgente] (https://github.com/nunit/ nunitv2) per ottenere maggiori informazioni. Ma- mentre ero lì - ho trovato una sottile differenza tra 'RemoteTestRunner' e' SimpleTestRunner' - il primo chiama CoreExtensions.Host.InitializeService' per te, mentre il semplice Runner non lo fa (quindi richiede all'utente di aggiungerlo a il tuo codice). – SethO

Problemi correlati