2009-07-18 6 views

답변

8

예, 확실히 생산품 어셈블리가 테스트 코드를 포함하는 것을 원하지는 않습니다 (제품의 일부가 아니기 때문에 제품 프레임 워크의 일부가 아니기 때문에).

+0

이론적으로는 true이지만 테스트 코드는 결코 호출되지 않습니다. [TestFixture]로 표시된 클래스의 집합입니다. – ripper234

+1

정확히 말하면, 목적을 위해 공간, 대역폭 및 시간 (어셈블리를로드 할 때)이 필요합니다. –

2

예 - 테스트 클래스는 자체 테스트 프로젝트에 포함되어야합니다.

0

예 - 외부 참조를 테스트하고 있습니다. 심지어 일부 순수 주의자가 약간의 지름길로 생각할지라도, 당신은 같은 해결책을 택할 수 있습니다.

+0

테스트 코드에서 작업하기 위해 리팩토링 도구 (R #)가 필요하므로 똑같은 솔루션을 원합니다. – ripper234

4

일반적인 .NET 규칙은 테스트 코드를 별도의 어셈블리에 포함하는 것입니다 (일반적으로 Visual Studio에서 각 프로젝트는 고유 한 어셈블리를 생성합니다).

왜 그렇습니까?


  • 많은 (I 포함) 당신이 생산 테스트를 배포되어서는 안된다는 생각 배포 선택을 제공합니다. 예를 들어 Question 261177를 참조 -
    이 테스트는 때때로이 한계입니다 (비록 당신의 API 디자인 권리를 얻을 필요가 증가 테스트중인 코드의 공개 인터페이스에 대해 작업 할 수 있도록 도와줍니다
  • 제한 테스트에 액세스 할 수 있습니다.)
  • 작은 각 테스트를 유지하는 데 도움이 나도 같은 프로젝트에 내 테스트를 롤백하는 데 사용하지만, 너무 많이 한 단위 테스트의 결과로 너무 많은 코드를 재사용 할 수있는 유혹이 있었다 발견하고 너무 깨지기
    .

필자는 동일한 솔루션에서 필요에 따라 [InternalsVisibleTo] 특성을 사용하지만 별도의 프로젝트에서 테스트를 진행합니다. 각 테스트의 이름을 .Tests.dll로 지정한 다음 NAnt 스크립트에서 와일드 카드를 사용하여 실행할 모든 테스트를 찾습니다.

0

참고 : Java에서 동일한 패키지에서 테스트를 계속하는 이유 중 하나는 의 테스트에서 패키지로 볼 수있는 방법을 테스트하기 위해 동일한 패키지에이 존재하기 때문입니다. InternalsVisibleTo은 .Net에서이 제한을 무시합니다.

관련 문제