2009-06-11 15 views
3

테스트 컨텍스트에서 조건부 특성을 사용하는 좋은 방법이 있습니까?C# : 테스트에 조건부 속성 사용

[Conditional("Debug")] 
public void DebugMethod() 
{ 
    //... 
} 

은 어쩌면 당신은 몇 가지 사용을 할 수 : (?)

[Conditional("Test")] 
public void TestableMethod() 
{ 
    //... 
} 

답변

4

더 나은있을 때 내가 사용을 볼 수 없습니다를

내 생각은 당신이 할 수 있다면 있다고했다 대안 : 프로젝트 테스트.

NUnit 또는 MSTest를 사용하면이 기능을보다 효과적으로 수행 할 수 있습니다.

+0

자세히주세요. 이것은 단지 브레인 스토밍 일이었습니다. 나는 방금 그것을 밖으로 던졌다, 나는 전혀 모른다. –

+0

자동으로이를 처리하는 테스트 프레임 워크가 있습니다. 클래스를 꾸미기 위해 사용할 속성을 제공합니다. 이것은 더 잘 설명 할 수 있습니다 : http://www.nunit.org/index.php –

1

나는 메흐 다드의 답변을 받아 들일 것 - 난 그냥 당신이 다음 속성을 사용할 수있는 경우에 대한 자세한 상황주고 싶어 : [Conditional] 같은

상황을 더 일반적으로 로깅/추적, 또는 상호 작용 등을 제어하는 ​​데 사용됩니다 실행중인 디버거; 호출이 일반 코드의 중간에 있어야하지만 특정 빌드에서 원하지 않을 수도있는 곳 (및 #if ... 등)은 잊어 버리기 쉽고 너무 추합니다.

1

테스트 코드가 제품의 일부가 아닌 경우 제품 코드 기반에 있어서는 안됩니다. 프로젝트에서 테스트 한 객체와 동일한 프로젝트에 단위 테스트를 포함시키고 나중에 디버그 빌드에만 포함시키기 위해 #if 문을 사용하여 프로젝트를 보았습니다.

하나의 명백한 문제는 응용 프로그램 프로젝트가 단위 테스트 프레임 워크에 대한 참조를 얻는 것입니다. 제품의 일부로 해당 프레임 워크를 제공 할 필요가 없을지라도 (릴리스 빌드의 코드가이를 참조하지 않는다고 보장 할 수있는 경우), 여전히 다소 우스운 냄새가 난다.

테스트 코드를 테스트 코드로, 프로덕션 코드를 프로덕션 코드 으로 설정하고 프로덕션 코드에 실마리가 없도록하십시오..

1

다른 문제는 릴리스 빌드에서 단위 테스트를 실행할 수 있다는 것입니다. (우리가 확실히).