2016-07-11 4 views
1

그래서 다른 프로그램에서 다음과 같이 명령 "vstest.console.exe"로 실행되는 NUnit 3.2.1로 컴파일 된 테스트의 DLL이 있습니다.동일한 저장소에 nunit.framework.dll이없는 NUnit 테스트 실행

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없이 내 테스트를 실행할 것입니다. (여전히 같은있어, 이미 마지막 버전이 너무 NUnit과 어댑터와 노력) 나는 GAC에서이 하나를 넣어 시도했습니다하지만 난 여전히 다음과 같은 오류가있어 :

>>> 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. 

그래서, 긴 이야기 짧은이다 동일한 디렉토리에서 nunit.framework.dll을 사용하지 않고 nunit 테스트의 내 dll을 시작할 수 있습니까? 감사합니다.

+0

* 왜 *할까요? 테스트 어셈블리는'nunit.framework.dll'을로드 할 수있을 것으로 기대합니다 ... 간단합니다. –

+0

글쎄,이 테스트를 여러 dll로 여러 디렉토리에서이 명령을 실행해야하며,이 테스트를 시작하기 위해 각 디렉토리에 nunit.Framework.dll을 설치하고 싶지 않습니다. 그래서 다른 곳으로 옮기고 싶습니다 (GAC를 시험해 보았습니다).하지만 참조가 찾을 수없는 것 같습니다. – neow

+0

하지만이 테스트 어셈블리를 어떻게 구축하고 있습니까? 빌드 프로세스가 nunit.framework.dll을 포함하여 테스트 어셈블리의 모든 종속성을 자동으로 포함 할 것으로 기대합니다. –

답변

0

NUnit 러너는 여러 버전의 프레임 워크를 지원하기 위해 프레임 워크를 수동으로로드합니다. 예를 들어, NUnit 2와 3 테스트는 완전히 다른 러너에 의해 내부적으로 실행됩니다. 또한 한 번의 테스트 실행으로 여러 버전의 프레임 워크에 대한 테스트 실행을 지원합니다.

NUnit은 다른 .NET 대상에 대해 여러 복사본을 지원하지 않기 때문에 어셈블리를 GAC에 넣는 설치와 함께 제공되지 않습니다. 이 때문에 어셈블리로드 코드는 GAC에서 테스트 된 적이 없으며 앞으로도 그대로 사용되지 않습니다.

GAC는 빌드하기 전에 NUnit의 올바른 버전과 대상을 수동으로 설치해야하는 팀의 개발자에게 어렵습니다. 또한 버전 업그레이드를 조정해야합니다.

디스크가 저렴하고 NuGet을 사용하여 의도 된대로 종속성을 복사 할 수 있습니다. 우리는 모두 빌드 도구와 싸우지 않고 비즈니스 문제를 해결하기 위해 고용되었습니다 .-

+0

네, 물론 NuGet을 사용하는 것이 좋겠지 만, 내 dll을 컴파일하고 서버에 설치하는 집에서 만든 도구로는 여전히 지원되지 않습니다. 그래서 나는 다른 방법을 찾아야 만합니다. 그리고 실제로 사본을 로컬 방식으로 시도합니다. 답변 해 주셔서 감사합니다. – neow