2010-05-13 9 views
18

J'essaie d'écrire une méthode simple qui reçoit un fichier et l'exécute en utilisant NUnit. Le code que je réussi à construire en utilisant la source de NUnit ne fonctionne pas:Comment exécuter des tests NUnit à partir du code 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); 

Le problème est que je continue à obtenir une exception levée par builder.Build indiquant que l'assemblée n'a pas été trouvé.

Qu'est-ce qui me manque? Existe-t-il un autre moyen d'exécuter le test à partir du code (sans utiliser Process.Start)?

+0

Pour être honnête, je ne sais pas ce mode de test. En supposant aveugle, avez-vous essayé d'exécuter ce test via l'interface graphique de NUnit, ou vérifié si vous aviez toutes les dépendances référencées dans votre projet, ou si l'assembly est situé là où l'exception indique qu'il ne peut pas le trouver? Une classe de test avec NUnit doit avoir l'attribut [TestFixture()] et les méthodes de test l'attribut [Test()], en utilisant l'importation NUnit.Framework. –

Répondre

27

ajoutant la ligne suivante au début, met en place le cadre NUnit et peut vous aider:

CoreExtensions.Host.InitializeService(); 

Un autre « plus facile » façon d'exécuter NUnit des tests serait programme sont:

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

Vous besoin de référencer les ensembles suivants:

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

Et bien sûr, le nunit.framework.dll doit être dans le dossier avec votre ensemble de test;)

+1

L'un de ces éléments est-il documenté? Je voudrais implémenter quelque chose comme ça moi-même mais je préférerais RTFM pour voir quelles sont les options qui s'offrent à moi – Andy

+2

Je n'ai trouvé aucune documentation et ai dû fouiller dans le [code source] (https://github.com/nunit/ nunitv2) pour obtenir plus d'informations. Mais - pendant que j'y étais - j'ai trouvé une différence subtile entre 'RemoteTestRunner' et' SimpleTestRunner' - le premier appelle 'CoreExtensions.Host.InitializeService' pour vous, alors que le Simple Runner ne le fait pas (vous demandant ainsi à l'utilisateur de l'ajouter à votre code). – SethO

Questions connexes