단위 테스트를 작성할 때 테스트하려는 어셈블리 안에 테스트를 배치합니까? 아니면 별도의 테스트 어셈블리에 배치합니까? 나는 단지 어셈블리를 제외 할 수 있기 때문에 탈주의 용이성을 위해 별도의 어셈블리에있는 클래스의 테스트와 함께 응용 프로그램을 작성했습니다. 누구든지 테스트 할 어셈블리 내에 테스트를 작성합니까? 그렇다면 그 테스트의 정당성은 무엇입니까?단위 테스트를 어셈블리 또는 개별 어셈블리에 쓰십시오?
답변
나는 인터페이스 프로젝트, 테스트 프로젝트, 도메인 프로젝트 및 데이터 프로젝트가있는 단일 솔루션을 보유하고 있습니다. 내가 공개 할 때 인터페이스를 게시하면 나던 참조 테스트가 컴파일되지 않습니다.
편집 : 결론은 최종 릴리스의 일부가 아니길 바래 야합니다. 별도의 프로젝트/어셈블리를 사용하여 VS에서이 작업을 자동으로 수행 할 수 있습니다. 그러나 동일한 어셈블리에서이 코드를 사용할 수는 있지만 nant 또는 msbuild를 사용하는 경우에는 해당 코드를 컴파일하지 마십시오. 조금 지저분하지만, 물건을 깔끔하게 유지하려면 별도의 어셈블리를 사용하십시오.
다른 어셈블리에서. 그렇지 않으면 조립품이 테스트 프레임 워크 (예 : Nunit.Framework.dll)를 참조하므로 고객 시스템에 설치해야합니다.
배송중인 제품이 라이브러리이고 고객이 단위 테스트를 예제로 사용하거나 제공하는 개체를 사용하는 방법에 대한 구체화를 사용하면 생산 어셈블리에 포함 할 때 거의 이점이 없습니다.
이것은 널리 인터넷을 통해 토론되고 있습니다.
우리는 테스터 어셈블리가 테스트 된 어셈블리의 모든 내부를 볼 수 있도록 별도의 어셈블리와 InternalsVisibleTo 특성을 사용합니다. 우리는 테스트중인 각 어셈블리에 대해 하나의 테스트 어셈블리를 만드는 경향이 있습니다.
참조 용 +1 InternalsVisibleToAttribute. 링크도 추가해야합니다. http://msdn.microsoft.com/en-us/library/0tke9fxk.aspx –
마지막 배포에서 테스트 코드를 통합하려는 경우는 응용 프로그램을 모니터링하고 제어하기위한 테스트 코드가있는 경우입니다. 모든에서
- 가 진짜 장점에 코드를 bloats - 모든 추가 코드가 함께 태그 것은 현장에서 전혀 사용하지 않을 :
배포의 테스트 코드를 떠난다.
- 은 출시에 영향을 미칩니다. - 전체 앱의 새 버전을 출시합니까? 개선 한 부분이 테스트 코드에만있는 경우 (예 : 테스트 슈트는 버그 수정의 결과로 확장됩니다.
- 다른 프로젝트에서 테스트 프레임 워크를 쉽게 다시 사용할 수 없습니다. - 항상 테스트 코드로 막힌 앱을 출시하는 경우 이후 프로젝트는 동일한 테스트 코드를 다시 사용해야합니다. 그렇지 않으면 앱 A가 앱의 측면에 대해 v1.2의 테스트 플랫폼을 사용하고있는 상황을 마무리합니다. 모든 앱에서 공통으로 사용됩니다 (예 : 프리젠 테이션 레이어 또는 비즈니스 로직 프레임 워크 등. B는 v1.1의 테스트 프레임 워크 인 app을 사용하고 있습니다.
- 쉽게 업그레이드하고 필요에 따라 테스트 스위트를 확장 : C는 otherhand에
디커플링 당신이 수 등 V1.2.1을 사용하고 있습니다.
- 은 여러 프로젝트에서 테스트 스위트를 쉽게 다시 사용할 수 있습니다.
- 은 여러 프로젝트에서 공통된 테스트 프레임 워크를 사용합니다.
환호 HTH,
롭
'릴리스에 영향을 미치고 테스트 재사용'에 좋은 점 (둘 다 버전 관련). – Fil
당신은 솔루션에 별도의 어셈블리에 보관 할 수 있으며, ILMerge 그들 나중에 디버깅 및 출시를 ILMerge하지 않습니다.
- 1. 단위 테스트를 위해 Java에서 개별 메소드를 스텁하는 방법은 무엇입니까?
- 2. 단위 테스트를 실행하는 MSBuild
- 3. 단위 테스트를 찾는 방법
- 4. 어셈블리 접두어없이 .NET 어셈블리에 리소스를 포함 시키시겠습니까?
- 5. DAO (단위 저장소)는 단위 테스트를 받아야합니까?
- 6. 여러 파일과 단위 테스트에 걸쳐있는 .NET 어셈블리
- 7. 단위 테스트를 사용하는 PHP 디버거
- 8. CPPUnit에서 단위 테스트를 끄는 방법
- 9. 이 단위 테스트를 제대로하고 있습니까?
- 10. Maven : 단위 테스트를 원격으로 실행
- 11. 단위 테스트를 위해 SimpleHTTPServer 사용하기
- 12. SQLRepository에 대해서 단위 테스트를 실행해야합니까?
- 13. Silverlight 단위 테스트를 실행하는 NullReferenceException
- 14. 어떻게 단위 테스트를 패키지로 구성합니까?
- 15. 루비에서 단위 테스트를 어떻게 분할해야합니까?
- 16. 심포니는 자동 단위 테스트를 수행합니까?
- 17. 404 단위 테스트 또는 통합 테스트를 어떻게 찾을 수 있습니까?
- 18. Visual Studio 또는 TFS 서버에서 단위 테스트를 실행합니까?
- 19. 여러 환경에서 단위 테스트를 자동으로 실행하는 도구
- 20. 일반 C로 단위 테스트를 작성하는 방법은 무엇입니까?
- 21. 단위 테스트를 항상 통과시키는 방법은 무엇입니까?
- 22. 단위 테스트를 위해 NUnit과 MSTest를 전환하는 중
- 23. 어셈블리 서명을위한 signtool과 sn 또는 al의 차이점
- 24. 원격 저장소 절차에 단위 테스트를 수행하는 방법
- 25. PHP 단위 테스트를 설정하거나 구성하는 방법
- 26. 오이가 단위 테스트를 작성할 필요가 없습니까?
- 27. 단위 테스트를 작성하기 전에 통합 테스트를 작성하는 것이 일반적입니까?
- 28. 단위 테스트를 통해 테스트 스크립트를 사용하는시기는 언제입니까?
- 29. SQL 어셈블리에 클래스가 없습니다.
- 30. Visual Studio에서 특정 버전의 버전이있는 어셈블리에 대한 참조 추가
이 주제에 대한 유용한 정보 : http://stackoverflow.com/questions/347156/do-you-put-unit-tests-in-same-project-or-another-project – Mats