2016-07-11 5 views
1

Итак, у меня есть моя dll теста, скомпилированная с NUnit 3.2.1, которую я запускаю с помощью команды vstest.console.exe в другой программе:Запуск теста NUnit без файла nunit.framework.dll в том же репозитории

var Args = "/UseVsixExtensions:true" + " " + "\"" + @"D:\path\myDllTestNunit.dll" + "\"" + 
       " " + "/TestAdapterPath:" + "\"" + @"C:\path\NUnit3TestAdapter.3.0.10\lib" + "\"" + 
       " " + "/Logger:trx" + " /settings:" + "\"" + @"D:\pathRunsettings\dbci_2016_06_23_10_01_56.runsettings" + "\""; 
     var cmdPath = @"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe"; 

     var proc = new Process(); 
     proc.StartInfo.FileName = cmdPath; 
     proc.StartInfo.Arguments = Args; 

     proc.StartInfo.RedirectStandardOutput = true; 
     proc.StartInfo.RedirectStandardError = true; 
     proc.EnableRaisingEvents = true; 
     proc.StartInfo.CreateNoWindow = false; 

     proc.ErrorDataReceived += proc_DataReceived; 
     proc.OutputDataReceived += proc_DataReceived; 
     proc.StartInfo.UseShellExecute = false; 
     proc.Start(); 

     proc.BeginErrorReadLine(); 
     proc.BeginOutputReadLine(); 

     proc.WaitForExit(); 
     Console.ReadLine(); 

Моя проблема заключается в том, что я хочу, чтобы выполнить мой тест с этой командой, но без nunit.framework.dll в том же каталоге. Я пытался поставить этот один в GAC, но я все еще получил следующую ошибку (уже пробовали с NUnit адаптер последняя версия тоже еще есть то же самое):

>>> Starting test execution, please wait... 
>>> Information: NUnit Adapter 3.0.10.0: Test execution started 
>>> 
>>> Information: Running all tests in D:\appli\statro\RSS3_BATCHES_TEST\UT\LANCE 
MENT_TESTS\RSS3.Batches.Test.Nunit.Tests.dll 
>>> 
>>> Warning: Dependent Assembly nunit.framework of D:\appli\statro\RSS3_BATCHES_ 
TEST\UT\LANCEMENT_TESTS\RSS3.Batches.Test.Nunit.Tests.dll not found. Can be igno 
red if not a NUnit project. 
>>> 
>>> Information: NUnit Adapter 3.0.10.0: Test execution complete 
>>> 
>>> Warning: No test is available in D:\appli\statro\RSS3_BATCHES_TEST\UT\LANCEM 
ENT_TESTS\RSS3.Batches.Test.Nunit.Tests.dll. Make sure that installed test disco 
verers & executors, platform & framework version settings are appropriate and tr 
y again. 

Так, Короче говоря, это можно запустить мою dll nunit-теста, не имея nunit.framework.dll в том же каталоге? Спасибо

+0

* Зачем вы хотите это сделать? В тестовой сборке ожидается, что она сможет загрузить 'nunit.framework.dll' ... это так просто. –

+0

Ну, мне нужно будет запустить эту команду в нескольких каталогах с несколькими DLL-тестами, и я не хочу устанавливать nunit.Framework.dll в каждом каталоге, чтобы запустить эти тесты. Поэтому я хочу поместить его в другое место (попробовал GAC), но кажется, что ссылки не могут найти его. – neow

+0

Но как вы строите эти тестовые сборки? Я ожидаю, что процесс сборки будет включать все зависимости тестовых сборок - в том числе nunit.framework.dll - автоматически. –

ответ

0

Бегуны NUnit вручную загружают фреймворк, чтобы поддерживать несколько версий фреймворка. Например, тесты NUnit 2 и 3 выполняются полностью другим бегуном внутри. Мы также поддерживаем выполнение тестов против нескольких версий фреймворка за один прогон.

NUnit также не поставляется с установкой, которая помещает сборки в GAC, поскольку она не поддерживает несколько копий для разных целей .NET. Из-за этого код загрузки сборки никогда не тестировался с GAC, и это не будет.

GAC также сложно для разработчиков в вашей команде, которым необходимо вручную установить правильную версию и цель NUnit до их сборки. Им также необходимо согласовать обновление версий.

Диск дешевый, используйте NuGet и разрешите его копировать в зависимости от того, как это было предусмотрено. Мы все наняты для решения бизнес-задач, а не для борьбы с нашими инструментами построения ;-)

+0

Да, конечно, было бы здорово использовать NuGet, но он до сих пор не поддерживается домашними инструментами, которые компилируют мои DLL и устанавливают их на сервере. Поэтому мне нужно найти другие способы, и я на самом деле пытаюсь копировать локально. Спасибо за ваш ответ – neow