2013-04-12 2 views
6

Мне нужно программировать отдельные тесты C# NUnit. Я нашел another post, что очень помогло мне показать, как программировать весь набор тестов, но мне нужно выбрать отдельные тесты.Выполнение отдельных тестов NUnit программно

Я думал, что настройка NameFilter будет делать трюк, но RemoteTestRunner только кажется, что в моем пакете есть один тест, когда их более пятидесяти. Действительно ли это все тесты в одной DLL в один гигантский тест? Есть ли способ, чтобы я мог их разделить и запускать отдельные тестовые примеры?

+0

Что вы подразумеваете под программным управлением? Вы говорите о том, чтобы запустить другой процесс и передать команду через командную строку для запуска определенных тестов или сделать это по-другому? – Zipper

+0

Я имею в виду код, который будет выполнять модульные тесты, выполнив вызов функции: 'CoreExtensions.Host.InitializeService();' 'TestPackage testPackage = новый TestPackage (@" C: \ Dev \ MyUnitTests.dll "); 'RemoteTestRunner remoteTestRunner = новый RemoteTestRunner();' ' remoteTestRunner.Load (testPackage);' ' TestResult TestResult = remoteTestRunner.Run (новый NullListener(), TestFilter.Empty, ложь, LoggingThreshold.Error);' – Huitzilopochtli

+1

В основном я пытаюсь написать код, который будет запускать единичный тест для меня и сохранить результат в некоторой структуре данных. Вместо запуска тестов из командной строки или графического интерфейса я хочу иметь возможность писать код, который выполняет тесты NUnit. У меня есть код из сообщения, с которым я связан, что показывает мне, как программно запускать _every_ test в определенном пакете, но я хочу, чтобы у вас была возможность запуска выбранных тестов в наборе. – Huitzilopochtli

ответ

0

Мне пришлось использовать SimpleNameFilter и передать его конструктору имя модульного теста, который я хотел запустить. Вот что у меня есть:

SimpleNameFilter filter = new SimpleNameFilter("Google.Maps.Test.Integrations.GeocodingServiceTests.Empty_address"); 
TestResult testResult = remoteTestRunner.Run(new NullListener(), filter, false, LoggingThreshold.Error); 

Вы можете получить полное имя тестирования, либо выяснить это из самого теста или глядя на свойства вашего теста в программе NUnit.

1

мне пришлось пройти через фильтр, а также, просто выполняя

TestResult testResult = remoteTestRunner.Run(new NullListener(), null , false, LoggingThreshold.Error); 

закончилась NullReferenceException. Я быстро создал пустой фильтр

class EmptyFilter : TestFilter 
{ 

    public override bool Match(ITest test) 
    { 
     return true; 
    } 
} 

и передал его в remoteTestRunner.

TestResult testResult = remoteTestRunner.Run(new NullListener(), new EmptyFilter() , false, LoggingThreshold.Error); 

Это сработало. Что можно было бы немного инвестировать, так это поиск того, что NUnit уже имеет аналогичный фильтр, который можно использовать повторно, а не создавать пользовательский.

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