2010-05-13 5 views
18

Я пытаюсь написать простой метод, который получает файл и запускает его с помощью NUnit. код мне удалось построить с использованием источника NUnit не работает:Как выполнить тесты NUnit с кодом 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); 

Проблема заключается в том, что я получаю исключение, брошенное builder.Build о том, что сборка не была найдена.

Что мне не хватает? Есть ли другой способ запустить тест из кода (без использования Process.Start)?

+0

Честно говоря, я не знаю об этом способе тестирования. Неужели вы пытаетесь запустить этот тест через графический интерфейс NUnit или проверили, были ли у вас все зависимости, указанные в вашем проекте, или, может быть, если сборка находится там, где исключение говорит, что не может найти ее? Тест-класс с NUnit должен иметь атрибут [TestFixture()], а тестовые методы - атрибут [Test()], используя импорт NUnit.Framework. –

ответ

27

Добавление следующей строки в начале, устанавливает рамки NUnit и может помочь вам:

CoreExtensions.Host.InitializeService(); 

другой "легкий" способ выполнения NUnit испытаний программно будет:

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

You необходимо ссылаться на следующие узлы:

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

И конечно, nunit.framework.dll должен находиться в папке с тестовой сборкой;)

+1

Является ли какой-либо из этих материалов документированным? Я хотел бы реализовать что-то подобное, но я предпочел бы RTFM, чтобы увидеть, какие варианты открыты для меня. – Andy

+2

. Я не нашел документации и должен был подталкивать [исходный код] (https://github.com/nunit/ nunitv2), чтобы получить дополнительную информацию. Но, пока я был там, я обнаружил тонкую разницу между «RemoteTestRunner» и «SimpleTestRunner» - первый из них вызывает «CoreExtensions.Host.InitializeService» для вас, в то время как простой бегун не делает этого (тем самым вы должны добавить его пользователю ваш код). – SethO

Смежные вопросы