2014-12-25 8 views
15

CLI 및 기본 코드를 사용하는 Visual Studio 2013 테스트 프레임 워크에 C# 유닛 테스트가 있습니다. C# 단위 테스트를 실행하는 동안 코드의 기본 부분을 조사하고 싶습니다. 그러나 테스트 -> 디버그 -> 모든 테스트를 실행하면 관리되는 디버거가 실행되므로 원시 코드의 중단 점이 적중되지 않으며 혼합 모드 디버거에서 프로그램을 실행할 때처럼 C# -> C++/CLI 코드에서 추적 할 수 없습니다. 예를 들어Visual Studio 2013의 관리되는 유닛 테스트에서 혼합 모드 디버깅 사용

, 내 단위 테스트에서이 코드 :

[TestMethod] 
public void TestRoundTripEvaluate() 
{ 
    var obj = new MyCLIObject(); 
    var roundtripped = RoundtripXml(obj); 

    // I would like to trace into here to see why Equals returns false. 
    // But the definition for MyCLIObject is in a CPP file and cannot be navigated 
    // to running the unit test because Visual Studio starts the debugger as "managed only" 
    // when using Test -> Debug -> All Tests 
    Assert.IsTrue(obj.Equals(roundtripped)); 
} 

단위 테스트 프로젝트에 대한 프로젝트 설정을 보면은, 디버그에서 모든 그래서 사용을 확인할 수 없습니다, 네이티브 코드 디버깅, 비활성화되어있는 일반 프로그램에 대해이 동작을 허용합니다.

VS C# 유닛 테스트를 실행할 때 혼합 모드 디버깅 또는 원시 전용 디버깅을 활성화하려면 어떻게해야합니까?

+0

기록을 위해 , 내가 "네이티브 코드 디버깅 사용"VS2013 업데이트를 사용하고있어 사용할 수 있습니다. 어떤 버전의 VS를 사용하고 있습니까? – codingadventures

답변

0

VS에서 원시 코드를 디버깅하는 방법을 알지 못합니다. 왜 두 개의 객체가 동일하지 않은지 이해하고 싶다면 "equals"호출에 대해 비교가 어떤 것인지 확인해야합니다.

이를 읽어보세요 : MyCLIObject의 비교 RoundtripXml의 유형을 찾고되지 않는 MyCLIObject 이후 https://msdn.microsoft.com/en-us/library/ms173147(VS.80).aspx

RoundtripXml과 같은 형식이 아닙니다, 나는 항상 false를 반환 할 것으로 예상합니다.

당신이 호출 할 수

Assert.IsTrue(roundtripped.Equals(obj)); 

다음 Equals()의 RoundtripXml 클래스의 버전에서 무슨 일이 일어나고 있는지 볼 (가정 그것은 CPP/기본적으로 설치되지 않았습니다). 로부터 속성 페이지에

12
  1. 이동하여 단위 테스트 프로젝트에 대한 (마우스 오른쪽 버튼을 클릭 한 후 "속성"을 클릭합니다 솔루션 탐색기에서 프로젝트)은 "디버그"탭으로
  2. 이동 (4
  3. "네이티브 코드 디버깅 사용"확인란을 사용하도록 설정합니다.
  4. 유닛 테스트를 디버깅합니다. 네이티브 코드 또는 관리되는 코드에서 중단 점을 설정할 수 있으며 두 가지 유형 중 하나로 이동할 수 있습니다. 암호.

방금 ​​당신과 같은 문제가있어서이 단계를 사용하여 작동하게 만들 수있었습니다. 이 체크 박스를 활성화하기 전에 작동하지 않았습니다. 내가 vs2013 업데이트 4, 체크 박스를 사용하고 4

enter image description here