2013-07-01 3 views
5

nunit-console을 사용하여 내 솔루션에서 모든 테스트를 실행합니다.nunit-console "MySolution.sln을 사용하여 파일 또는 어셈블리를로드 할 수 없습니다"

c:\some\path>nunit-console-x86.exe MySolution.sln 
NUnit-Console version 2.6.2.12296 
Copyright (C) 2002-2012 Charlie Poole. 
Copyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov. 
Copyright (C) 2000-2002 Philip Craig. 
All Rights Reserved. 

Runtime Environment - 
    OS Version: Microsoft Windows NT 6.1.7601 Service Pack 1 
    CLR Version: 2.0.50727.5466 (Net 3.5) 

ProcessModel: Default DomainUsage: Default 
Execution Runtime: net-3.5 
Could not load file or assembly 'MyNamespace.Administration, Version=0.0.0.1, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified. 

그래서, 내가 File > Open Project > MySolution.sln했다 nunit-x86.exe을 바꾸기로했습니다이있어 :

나는이 한 일이 어떻게 무엇

--------------------------- 
NUnit 
--------------------------- 
Test load failed! 

System.IO.FileNotFoundException : Could not load file or assembly 
'MyNamespace.Administration, Version=0.0.0.1, Culture=neutral, 
PublicKeyToken=null' or one of its dependencies. The system cannot 
find the file specified. 

For further information, use the Exception Details menu item. 
--------------------------- 
OK 
--------------------------- 

The exception can be found here

할을 고쳐? NUNIT가보고를로드하려고 실패한다는 것을 의미

  • MyNamespace.Administration도 테스트를 포함하는 DLL이 중 하나가 아닌

    상세 정보 (A MySolution.nunit 파일을 관리 할 필요없이) 실행 테스트. 이걸 알면 nunit-x86.exe (MySolution.nunit)으로 만든 파일을 편집하고 테스트가없는 모든 dll을 제거했습니다. 물론 테스트는 작동합니다 (GUI와 콘솔 모두에서). 이것은 내가 다른 설정 파일을 유지해야한다는 것을 의미하기 때문에 받아 들일 수 없다. Nunit .sln 파일을 지원하는 것은 이것을 피하기로되어있었습니다.

  • 내 시험은 잘 TestDriven.Net을 사용하여 실행 (하지만 난 정말 NUNIT 콘솔 사용하여 실행해야합니다)
  • 내가 this answer 살펴 보았다을하지만 난 융합 로그 뷰어의 말씀의 의미가 없습니다. 그 로그가 도움이 될까요? 내 프로젝트 폴더에 nunit.core을 찾고 하나 -이 하나 MyNamespace.Administration.dll/EXE inside the nunit directories
  • Tests_24398275 X2를 찾기 위해 노력하고있는 것 같다,
    • NUNIT - 에이전트 X86.EXE을 : 로그 뷰어를 결합 총회는, 3 개 개의 파일이 생성되고 나열 다른 하나는 프로젝트 폴더 내의 unit.core.interfaces를 찾고 있습니다. 이 둘은 내 수동으로 편집 된 .nunit 프로젝트에도 표시되기 때문에이 두 가지에 대해서는 거의 관심을 기울이지 않을 것입니다.
  • (andreister 덧글) 문제는 프로젝트/어셈블리 자체와 생성 방법이 아닌 것으로 보입니다. .nunit 프로젝트를 만들고 ('Add Assembly ...'또는 'VS Project 추가 ...'를 사용하여) MyNamespace.Administration을 추가하려고하면 실패합니다.
  • nunit-console-x86 somepath/bin/Debug/MyNamespace.Administration.dll을 호출하면 바로 작동합니다.
+0

분명히, 'MyNamespace.Administration.dll'에는 테스트에서 사용 된 코드가 포함되어 있습니다. 예를 들어, 프로젝트를 참조 할 때'CopyLocal = True'를 쓰는 것을 잊지 않았습니까? – andreister

+0

그것은 테스트 프로젝트 (dll)에 의해 참조되지만 MySolution.nunit을 사용할 때 그 프로젝트가 작동합니다. 그러면 테스트가 있는지를보기 위해 그 프로젝트를로드하는 데 실제로 실패 할 것이라고 믿습니다. (저는 가정합니다. 어떤 프로젝트에 테스트가 있는지 확인하기 위해 프로젝트를 엽니 다.) –

+0

그 프로젝트를'.nunit'에 명시 적으로 추가하는 방법은 실패 할까? 일반적으로 비 테스트 프로젝트 인 NUnit은 테스트가 없다고보고합니다. – andreister

답변

3

불행히도 nunit-discuss group에 게시 한 후에도이 문제에 대한 적절한 해결책을 찾을 수 없습니다.

nunit-discuss 그룹은 한 수준 위로 종속성이 있기 때문에 테스트가 실패했음을 확인했습니다.

그러나 나는 적절한 해결책을 찾았습니다.

.dll을 직접 호출해도 동일한 문제가 발생하지 않으므로. 나는 globs로 이것을 할 수 있었지만, 나는 창문에있다. 그러나 나는 git bash를 설치했다.

내가이 일을 관리 내 다소 딱딱한 프로젝트 구조의 활용 및 명명 규칙 :

"C:\Program Files (x86)\Git\bin\bash.exe" -c 'nunit-console-x86.exe //framework=net-4.5 //xml:nunitresults.xml MysolutionFolder/Tests/*/bin/Debug/*.Tests.dll' 

내가 내 이름 지정 규칙을 이용했다 있습니다. 이것은 인수의 수를 줄이기 위해 매우 중요합니다.

MysolutionFolder/Tests/*/bin/Debug/*.Tests.dll 대신 nunit-console-x86 MysolutionFolder/*/*/bin/Debug/*.dll을했을 때 nunit-console-x86Bad file number 인 오류가 발생했습니다. 게다가 적절한 파일을 제공하면 더 빠릅니다.

당신이 배쉬의 최신 버전이있는 경우 (4.0 이상을, 내가 생각하는) 대신 다음 명령 (**의 사용에주의)를 사용할 수 있습니다 : 온 더 짧고 더 관대

"C:\Program Files (x86)\Git\bin\bash.exe" -c 'nunit-console-x86.exe //framework=net-4.5 //xml:nunitresults.xml MysolutionFolder/**/bin/Debug/*.Tests.dll' 

을 프로젝트 구조. 내 대답 재개시

5

NUNIT을-토론

솔루션 VS로드의 NUnit과 기능은 간단한 프로젝트 또는 NUnit과 프로젝트 파일을 만들 수있는 빠른 방법으로 일을 정말 상당히 제한되어 의도 - 솔루션을로드 즉, NUnit 프로젝트로 저장 한 다음 생성 된 XML 파일을 편집하십시오. 솔루션 파일 형식은 테스트 파일을 나타내지 않으므로 NUnit은 테스트가 포함되어 있는지 확인하기 위해 각 프로젝트를로드하려고 시도합니다. (Visual Studio 2012 이상에서 테스트 탐색기 창을 사용할 때와 동일한 작업입니다.)

제안한 것처럼 특정 수준의 종속성이 있기 때문에 특정 어셈블리를로드하지 못할 수도 있습니다. VS 솔루션 파일 또는 NUnit 프로젝트 파일을로드 할 때 NUnit은 솔루션 또는 프로젝트가 포함 된 디렉토리에 응용 프로그램 기본을 설정합니다. NUnit 프로젝트 파일이 한 레벨 위로 작동하는 이유입니다.

이러한 상황에서 설계자의 의도는 NUnit 프로젝트 파일을 생성한다는 것입니다. 유지 관리 할 다른 설정 파일을 제공하기 때문에 이것이 다소 불편하다는 것을 알고 있습니다. 명령 줄이나 프로젝트 파일에서 globs 사용과 관련된 제안을 할 수 있습니다. 이러한 변경 사항은 다음 주요 업그레이드 인 NUnit 3.0으로 전환 될 것입니다.

+0

Personality는 다음을 나타낼 수있는 추가 명령 인수입니다. 각 프로젝트의 루트에서 테스트를 실행해야합니다. 수십 개의 프로젝트가있는 솔루션의 경우 .sln 파일의 사용은 매우 편리하지만 설정 파일 및 종속성 격리를 보장 할 수있는 방법이 있어야합니다. – MytyMyky