Java의 규칙은 다릅니다. 모든 "모듈"(IntelliJ의 Java와 동일)에는 src 및 test 디렉토리가 있습니다. 따라서 jUnit은 프로젝트마다 실행될 수 있으므로 별도의 테스트 프로젝트가 필요하지 않습니다..Net 테스트 클래스는 다른 프로젝트에 있어야합니까?
답변
예, 확실히 생산품 어셈블리가 테스트 코드를 포함하는 것을 원하지는 않습니다 (제품의 일부가 아니기 때문에 제품 프레임 워크의 일부가 아니기 때문에).
예 - 테스트 클래스는 자체 테스트 프로젝트에 포함되어야합니다.
예 - 외부 참조를 테스트하고 있습니다. 심지어 일부 순수 주의자가 약간의 지름길로 생각할지라도, 당신은 같은 해결책을 택할 수 있습니다.
테스트 코드에서 작업하기 위해 리팩토링 도구 (R #)가 필요하므로 똑같은 솔루션을 원합니다. – ripper234
일반적인 .NET 규칙은 테스트 코드를 별도의 어셈블리에 포함하는 것입니다 (일반적으로 Visual Studio에서 각 프로젝트는 고유 한 어셈블리를 생성합니다).
왜 그렇습니까?
- 는
많은 (I 포함) 당신이 생산 테스트를 배포되어서는 안된다는 생각 배포 선택을 제공합니다. 예를 들어 Question 261177를 참조 -
이 테스트는 때때로이 한계입니다 (비록 당신의 API 디자인 권리를 얻을 필요가 증가 테스트중인 코드의 공개 인터페이스에 대해 작업 할 수 있도록 도와줍니다 - 제한 테스트에 액세스 할 수 있습니다.)
- 작은 각 테스트를 유지하는 데 도움이 나도 같은 프로젝트에 내 테스트를 롤백하는 데 사용하지만, 너무 많이 한 단위 테스트의 결과로 너무 많은 코드를 재사용 할 수있는 유혹이 있었다 발견하고 너무 깨지기
.
필자는 동일한 솔루션에서 필요에 따라 [InternalsVisibleTo] 특성을 사용하지만 별도의 프로젝트에서 테스트를 진행합니다. 각 테스트의 이름을 .Tests.dll로 지정한 다음 NAnt 스크립트에서 와일드 카드를 사용하여 실행할 모든 테스트를 찾습니다.
참고 : Java에서 동일한 패키지에서 테스트를 계속하는 이유 중 하나는 의 테스트에서 패키지로 볼 수있는 방법을 테스트하기 위해 동일한 패키지에이 존재하기 때문입니다. InternalsVisibleTo
은 .Net에서이 제한을 무시합니다.
이론적으로는 true이지만 테스트 코드는 결코 호출되지 않습니다. [TestFixture]로 표시된 클래스의 집합입니다. – ripper234
정확히 말하면, 목적을 위해 공간, 대역폭 및 시간 (어셈블리를로드 할 때)이 필요합니다. –