2014-12-02 2 views
1

그래서 어떤 테스트 메트릭 (NUnit)을 실행하려고하면 코드에서 일부 메트릭에 대해 NDepend API를 사용하여 프로젝트를 설정하려고합니다. , TypeInitializationExceptions 던져지고 있어요.NDepend TypeInitializationExceptions NUnit을 사용하여 테스트 할 때

  • false에 로컬 복사본을 설정, 클래스 라이브러리 프로젝트를 만들고 $NDependInstallPath$\lib\NDependAPI에서 NDepend의 API DLL을 참조 : 여기

    내가지고있어 오류를 재현하는 몇 가지 코드입니다. 다음과 같이 클래스를 만듭니다.

    public class NDependProjectLoader 
    { 
        public void LoadAnNDependProject() 
        { 
        var provider = new NDependServicesProvider(); 
        } 
    } 
    
  • Test 클래스가 될 솔루션에서 두 번째 클래스 라이브러리 프로젝트를 만듭니다. 참조 NUnit과 프로젝트 당신은이 NDependAPI

    [TestFixture] 
    public class NDependProjectLoader_Tests 
    { 
        [Test] 
        public void I_can_load_an_depend_project() 
        { 
        new NDependProjectLoader().LoadAnNDependProject(); 
        } 
    } 
    
  • 빌드를 참조하고, (내가 ReSharper에서의 테스트 러너와 NUnit과 GUI를 시도했습니다) 선택의 테스트 러너를 사용하여 테스트를 실행 만들었습니다.

  • 줄에 TypeInitializationException이 표시됩니다. var provider = new NDependServicesProvider();

"{"Could not load file or assembly 'NDepend.Platform.DotNet' or one of its dependencies. The system cannot find the file specified.":"NDepend.Platform.DotNet"}".

  • 가 NDepend.PowerTools 샘플 프로젝트에서 AssemblyResolverHelper을 추가 및 얻기에 설명 된대로 전화 : 그 TypeInitializationException 내부 찾고

  • 루트 예외의 메시지가 있음을 보여줍니다 시작 가이드는 동작을 변경하지 않습니다.

  • I/가정/문제가 NDepend API의이 문장에 관련되어 시작 가이드 http://www.ndepend.com/api/NDepend.API_gettingstarted.html

에서 "프로그램 실행 어셈블리는 $ NDependInstallPath $로 생성해야 \ "

  • 코드가 테스트 러너에서 시작되는 경우 실행 파일은 ndepend 설치 경로에 있지 않습니다. 그 .EXE $ NDependInstallPath $ \ lib 디렉토리의 \에 생성되는 콘솔 응용 프로그램에서 NDependProjectLoader.LoadAnNDependProject()를 호출

  • (.exe 인이 아닌 $ NDependInstallPath $의 \ lib 디렉토리의 \ 하위 폴더에 생성해야 할 것 같다 있습니다 \ 시작 안내서에 명시된대로) 예외를 생성하지 않습니다.

그렇다면 콘솔 응용 프로그램 이외의 항목에서 NDepend API로 어떻게 작동합니까? 예를 들어, 여기 테스트 주자에게서 그렇게하고 싶습니다. 또 다른 확실한 후보는 IIS 응용 프로그램입니다. 나는 명백한 것을 놓치고 있는가?

답변

0

실제로 어셈블리 문제로 인해 문제가 발생합니다. CLP에게 NDepend 어셈블리를 찾을 위치 (즉, dir $ NDependInstallPath $ \ Lib)를 알려 주어야합니다. 두 가지 선택 사항이 있습니다. 단지 예 :

  • 어느 편집 AssemblyResolverHelper은에 어셈블리를 해결하기 위해 "C : \ NDepend \ lib 디렉토리"NDependInstallPath $는 '\ NDepend C "입니다 $을 가정

  • 하나는의 app.config 파일을 생성 "C : \ NDepend \ Lib"을 참조하는 EXY, add a <probing> element CLR이 어셈블리를 해결하지 못하면 해당 요소에서 dir을 찾습니다.

+0

감사합니다. – thejackamo

관련 문제