문제

당신은 어떻게 일반적으로 이동에 대한 분리하는 코드베이스와 관련된 유닛 테스트?내가 알고 있을 만드는 사람들은 별도의 프로젝트에 대한 단위 테스트,나 개인적으로 찾을 혼란스럽고 유지하기 어렵습니다.다른 한편으로는 경우에,당신은 믹스 코드 및 테스트 단일 프로젝트에서,당신은 결국 바이너리에 관련된 단위 테스트 framework(수 NUnit,MbUnit 또는 어떤 다른 사람)및 자신의 바이너리에 있습니다.

이를 위해 디버깅,하지만 일단 구축 출 버전,내가 정말 원하지 않는 나의 코드 참조 장치 테스트 프레임워크 니다.

하나의 솔루션을 발견하는 것입 묶는 모든 단위 내에서 테스트하는 경우#디버그--#endif 지침:이 없을 때 코드를 참조 유닛 테스트를 어셈블리,컴파일러를 생략하에서 참조 코드를 컴파일합니다.

에는 어떤 것이 있는(아마도 더 편안)을 실현하기 위한 옵션을 비슷한 목표?

도움이 되었습니까?

해결책

나는 확실히 옹호 분리하고 테스트하려면 별도의 프로젝트입니다.그것은 갈 수 있는 유일한 방법에 내 의견입니다.

Yes,로 은 말한다,그것은 또한 당신을 테스트하는 행동을 통해 대중 방법보다 재생에 내장의 클래스

다른 팁

으로 다른 사람을 지적한,별도의 시험 프로젝트(각 정상적인 프로젝트)좋은 방법입니다 그것을 할 수 있습니다.나는 일반적으로 거의 네임스페이스 및 생성 테스트 클래스를 위해 각 정상적인 클래스'시험'이름에 추가됩니다.이것은 직접 지원 IDE 에서는 경우에 당신은 Visual Studio Team 시스템을 자동으로 생성할 수 있는 테스트 클래스와 방법에 다른 프로젝트입니다.

한가지 기억하려는 경우 테스트 클래스와는 방법으로는'내부'접근은 다음 줄을 추가하 어셈블리 정보.cs 파일에 대한 각 프로젝트를 테스트:

[assembly: InternalsVisibleTo("UnitTestProjectName")]

니다.Net framework 후 v2 은 유용한 기능을 표시 할 수 있습니다 어셈블리 InternalsVisibleTo 할 수 있게 하는 특성을 어셈블리에 의해 액세스할 수 있다.
일종의 어셈블리 터널링 기능입니다.

또 다른 대안을 사용하여 컴파일러 지시어에 파일을 만들거나 별도의 프로젝트는 단지를 추가로 만들.cs 파일로서 귀하의 프로젝트입니다.

일부와 함께 마법에서 프로젝트 파일 자체,당신을 지시할 수 있다:

  1. nunit.framework Dll 만 참조하는 디버그 빌드에서,그리고
  2. 테스트 파일로 포함하는 디버그 빌드에서

예입니다.csproj 발췌:

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">

   ...

   <Reference Include="nunit.framework" Condition=" '$(Configuration)'=='Debug' ">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\debug\nunit.framework.dll</HintPath>
   </Reference>

   ...

   <Compile Include="Test\ClassTest.cs" Condition=" '$(Configuration)'=='Debug' " />

   ...
</Project>

내가 권하고는 별도의 프로젝트에 대한 단위 테스트(아직 더 많은 프로젝트를 위한 통합 테스트 기능 테스트 etc.).가 섞는 코드 및 테스트에서 동일한 프로젝트고 훨씬 적은 유지 관리하기 보다는 그들을 분리하는 별도의 프로젝트입니다.

유지 병렬 네임스페이스를 사용하여 현명한 이름 지정 규칙에 대한 테스트(예를 들어.MyClass 및 MyClassTest)데 도움이 될 것입 당신은 유지하는 코드베이스에 유지 관리할 수 있습니다.

로 귀하의 테스트는 별도의 프로젝트는 테스트를 참조할 수 있습 codebase 지만,codebase 지를 참조하 테스트합니다.나는 무엇을 요청해야의 혼란을 유지하는 것에 대해 두 개의 프로젝트?유지할 수 있습니다 그들이 동일한 솔루션에 대한 조직입니다.

복잡한 부분은 물론,이 때의 사업은 55 프로젝트에서는 솔루션이고 그들의 60%는 테스트입니다.계산 자신이 운이 좋다.

나는 별도 프로젝트에서 테스트를 하지만 같은 솔루션입니다.부에서 큰 솔루션을 수 있습 프로젝트를 많이 있지만 솔루션 탐색기에 충분에서 그들을 분리하면 모든 것을 합리적인 이름이 나는 진짜로 생각하지 않는다 그것은 문제입니다.

를 위해 각 프로젝트가 있습니다.********시험 프로젝트는 테스트를 포함합니다.

E.g.어셈블리에 대한 라는 말,"Acme.BillingSystem.Utils",있을 것입 테스트 어셈블리라"Acme.BillingSystem.Utils.테스트"입니다.

에서 제외 운송 버전의 제품을 배송하는 dll.

나는 항상 내 계 단위 테스트에서 별도의 프로젝트에게 컴파일하여 자신의 어셈블리입니다.

하나는 것은 아직 고려될 버전의 visual studio2005 년 이전을 허용하지 않았 EXE 어셈블리 프로젝트에서 참조할 다른 프로젝트에 활용해 보십시오.그래서 작업하는 경우에는 기존 프로젝트 VS.NET 옵션이 될 것이다:

  • 을 넣어 단위 테스트에서 동일한 프로젝트에 사용 조건 컴파일을 제외하 릴리스에서 구축합니다.
  • 이동이 모든 것을 dll 어셈블리는 그래서 당신의 exe 은 항목이 포인트.
  • 피 IDE 해킹에 의해 프로젝트 파일에서는 텍스트 편집기입니다.

세 가지의 조건부 편집상 오류가 발생하기 쉽습니다.

나는 확실히 동의 다른 사람들과해야 하는 별도 테스트에서 생산 코드입니다.당신이 주장하는 경우에,그러나,정의해야 합 조건 comiplation 일정이라는 테스트,포장의 모든 단가 테스트 수업

#if TEST
#endif

먼저 확인하는 테스트 코드를 컴파일되지 않습니다에서 생산을 시나리오이다.그 작업이 완료되면,당신은 하나가 될 수 있을 제외하 테스트 dll 에서 당신의 생산을 배포하거나(그러나 더 높은 유지보수)을 만들고 넝 또는 MSBuild 생산을 위한 컴파일하지 않고 참조하 테스트 dlls.

난 항상 만드는 별도의 Acme.물건입니다.시험 프로젝트를 컴파일되는 따로 있습니다.

대화수:왜 당신은 당신을 테스트니까?왜 제공하 테스트?는 경우에 당신이 제공하는 테스트와 함께 테스트 러너 당신이 몇 가지 수준의 수용 테스트 및 자체험과 함께 제공되는 제품입니다.

나이 들었어요 인수는 몇 번이고 그것에 대해 생각했지만 나는 아직도 개인적으로 테스트에서 별도의 프로젝트입니다.

는 경우 #는 경우(디버그) 태그할 수 있 위해 깨끗한'릴리스'버전은,당신은 왜 필요한 별도의 프로젝트를 위한 테스트합니다.이 nunit LibarryA/B 예(그래,내가 그를 들어)이 작업을 수행합니다.현재과 레슬링을 시나리오.었을 사용하여 별도의 프로젝트,하지만 이것은 아마도 몇몇 생산성이 향상됩니다.여전히 허밍 및 hawin.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top