문제

MSDN 포럼에도 이 질문을 올렸지만 해결 방법을 찾지 못했습니다.

http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=3686852&SiteID=1

여기서 볼 수 있듯이 기본적인 문제는 interop 어셈블리에 실제로 계측할 수 있는 IL이 포함되어 있지 않다는 것입니다(몇 명의 대리자를 제외하고).따라서 상호 운용성 계층을 실행하는 테스트 프로젝트를 구성할 수는 있지만 이해가 되지 않습니다. 얼마나 실제로 호출하고 있는 메서드와 속성 중 하나입니다.

계획 B는 RCWW(런타임 호출 가능 래퍼 래퍼) 라이브러리를 생성하는 코드 생성기를 작성하고 코드 적용을 위해 이를 계측하는 것입니다.

편집하다:@프란시 페노프,

네, 그게 바로 제가 하고 싶은 일이에요.우리에게 전달된 COM 구성 요소는 대략적인 DLL을 포함하는 수십 개의 DLL 라이브러리로 구성됩니다.3000가지 종류.우리에게 라이브러리를 제공하는 그룹은 최소한의 테스트만 수행하므로 우리는 애플리케이션에서 해당 라이브러리를 사용하고 해당 Interop 계층을 테스트하는 책임을 맡습니다.코드 적용 범위를 통해 모든 인터페이스와 coclass가 실행되는지 확인할 수 있습니다.그것이 내가 하려는 전부입니다.자체 관리 코드를 실행하는 별도의 테스트 프로젝트가 있습니다.

예, 이상적으로는 COM 서버 팀이 자체 코드를 테스트하고 분석해야 하지만 우리는 이상적인 세상에 살고 있지 않으며 저는 그들의 작업을 기반으로 고품질 제품을 제공해야 합니다.코드 인터페이스의 80%를 테스트했고 그 중 50%가 광고된 대로 작동하지 않는다는 것을 나타내는 테스트 보고서를 생성할 수 있다면 해결 방법 문제가 아닌 수정이 필요한 부분을 수정할 수 있습니다.

당신이 언급한 모의 레이어는 유용할 것이지만 궁극적으로 Interop 레이어 자체를 테스트하는 목표를 달성하지는 못할 것이며 나는 확실히 그것을 수동으로 유지 관리하고 싶지 않습니다. 우리는 COM 직원의 자비에 달려 있습니다. 인터페이스 변경 사항.

위에서 언급한 것처럼 다음 단계는 래퍼용 래퍼를 생성하고 이를 테스트 목적으로 계측하는 것입니다.

도움이 되었습니까?

해결책

귀하의 질문에 대답하자면, 코드 적용 범위를 위해 interop 어셈블리를 계측하는 것은 불가능합니다.여기에는 메타데이터만 포함되어 있으며 직접 언급한 실행 코드는 없습니다.

게다가 interop 어셈블리에 대한 코드 적용을 시도하는 데 별 의미가 없습니다.작성한 코드의 코드 적용 범위를 측정해야 합니다.

당신이 언급한 MDN 포럼 스레드에서 당신은 실제로 코드가 COM 구성 요소를 어떻게 사용하는지 측정하고 싶어하는 것 같습니다.코드의 목표가 COM 개체의 모든 메서드와 속성을 열거하고 명시적으로 호출하는 것이 아니라면 코드 적용 범위를 측정할 필요가 없습니다.코드가 적시에 올바른 메서드/속성을 호출하는지 확인하려면 단위/시나리오 테스트가 필요합니다.

Imho, 이를 수행하는 올바른 방법은 COM 개체에 대한 모의 레이어를 작성하고 예상대로 모든 메서드/속성을 호출하는지 테스트하는 것입니다.

다른 팁

계획 C:

다음과 같은 것을 사용하십시오 모노.세실 간단한 실행 카운터를 interop 어셈블리에 엮습니다.예를 들어 자주하는 질문:"디버깅할 수 없는 어셈블리에 일부 추적 기능을 추가하고 싶습니다. Cecil을 사용하여 가능합니까?"

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top