NUnit работает тест (ы) не удается - PullRequest
0 голосов
/ 28 сентября 2018

Моя настройка

CoreExtensions.Host.InitializeService();
package = new TestPackage(pathToTestDll);
builder = new TestSuiteBuilder();
suite = builder.Build(package);

И работает (обратите внимание, что тесты - это действительный список NUnitTestMethods, полученный из набора

foreach (NUnitTestMethod t in tests)
{
    try
    {
        var res = t.RunTest();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
}

Я получаю это как стек исключений:

в System.Reflection.RuntimeMethodInfo.CheckConsistency (цель объекта) в System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck (объектный объект, параметры привязки BindingFlags invokeAttr, связыватель объекта, объектные объекты [], CultureInfoTimeIntime.Ru) в System.Run..Invoke (Object obj, BindingFlags invokeAttr, Binder binder, параметры Object [], CultureInfo culture) в System.Reflection.MethodBase.Invoke (Object obj, Object [] параметры) в NUnit.Core.Reflect.InvokeMethod (метод MethodInfo, Objectfixture, Object [] args) в NUnit.Core.TestMethod.RunTestMethod () в NUnit.Core.TestMethod.RunTestCase (TestResult testResult)

Обратите внимание, что t.RunTest (); скорее не сбойтест просто не выполняется, и установлен флаг HasError ...

Аргументы nunit.core и nunit.core.interfacesодни и те же файлы в моем тестовом пакете и пакете бегуна

1 Ответ

0 голосов
/ 28 сентября 2018

Вы инициализируете CoreServices, но не используете их, потому что тесты выполняются на очень низком уровне.Использование внутренних классов, не предназначенных для общего назначения, всегда рискованно.Но особенно рискованно, если вы собираете их по частям, а не используете их так, как это делает сам NUnit.

Если вы хотите запускать тесты программно (это может быть не очень хорошей идеей, но, похоже,будь то, что ты хочешь делать) тогда я предлагаю тебе выбрать и использовать одного из бегунов NUnit, чтобы позаботиться о деталях для тебя.Выберите из SimpleTestRUnner, RemoteTestRunner или TestDomain, в зависимости от того, как вы хотите, чтобы тесты выполнялись, и где.

TestDomain будет запускать их в отдельном AppDomain, который, как правило, самый простой и безопасный.RemoteTestRunner будет запускать их в текущем домене приложений, перенаправляя вывод.SimpleTestRunner - это бегун самого низкого уровня (но все же way более высокий уровень, чем вы делаете), и он просто запускает тесты там, где они есть.Обратите внимание, что вы не можете запускать тесты в одном и том же домене приложений (удаленном и простом), если вы не скопировали все тестовые файлы, их ссылки и файлы NUnit в один и тот же каталог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...