우리 팀에는 응용 프로그램 코드에 대해 실행되는 단위 테스트 라이브러리 집합이 있습니다. 불행히도 (예기치 않은) 예외가 발생합니다. 그 이유는 로깅 코드가 호출되고 객체가 설정되지 않기 때문입니다. 로깅 코드는 PostSharp (메소드 본문 실행 전후에 호출 됨)를 사용하여 설정 한 메소드 속성을 통해 실행됩니다. 속성을 호출하면 안됩니다..NET 조건부 컴파일러 기호 및 단위 테스트 라이브러리
PostSharp가 도움이되는 곳은 다음과 같습니다. 실행하지 말라는 조건부 컴파일러 지시문 (SKIPPOSTSHARP)을 찾습니다. 다시 말해 유닛 테스트가 실행되는 동안 지시문을 정의하면 로깅 측면과는 독립적으로 원하는 코드를 테스트 할 수 있습니다. 따라서 불필요한 종속성을 피하고 복잡한 코드를 성공적으로 피할 수 있습니다.
대단합니다! 하나의 catch를 제외하고 ... 테스트 프로젝트에 대해 정의 된 조건부 컴파일러 지시문은 테스트중인 프로젝트에 대해 정의되지 않습니다. 즉, 테스트중인 코드가 여전히 특성을 사용하고 테스트가 모두 실패 함을 의미합니다.
단위 테스트를 실행할 때만 전체 솔루션에 컴파일러 지시문을 정의 할 수 있습니까? 우리가 전체 솔루션에 적용하지 않더라도 단위 테스트를 실행하는 경우에만 지시문을 특정 프로젝트에 적용 할 수 있습니까?
나는이 접근법에 대한 의견을 듣고 싶다. (우리는 AOP 코드를 통해 분리 성과 확장 성을 얻으려고 노력하고 있지만 진행 과정에서 뛰어 넘기 위해 몇 가지 추가 작업이있는 것으로 보인다).
참고 : 여기서 단위 테스트 만하는 통합 테스트는 아닙니다. 우리는 특정 유닛을 테스트하기를 원하며 로깅 코드가 작동하는지 여부에 상관없이 다른 유닛 테스트 (잘 작동 함)에 의해 테스트를받습니다.
단위 테스트는 어떻게 실행됩니까? msbuild를 사용하여 타겟을 실행하여 단위 테스트를 실행할 수 있습니까? – Khanzor
우리의 테스트는 두 가지 시나리오에서 실행됩니다. A) 로컬 개발 테스트 러너 (ReSharper의 Unit Test Runner) 또는 B) 빌드 서버에서 Gallio through Nant를 실행하는 CI Factory를 통해. 당신의 접근 방식은 재미 있다고 들리지만 (결론적으로 말하면 아직까지 MSBuild에 대해 충분히 알지 못함). 다른 고려 사항은 자동 Nant 스크립트에서 동등한 작업을 얻는 것이지만 MSBuild가 뭔가를 할 수 있다면 Nant는 문제가 없을 것이라고 상상합니다. –