2009-02-24 7 views
10

Visual Studio 2008 (.net 2.0)을 사용하여 기존 (상당히 큰) 응용 프로그램에서 단위 테스트를 구현하는 방법을 알고 싶습니다.유닛 테스트 초보자

기존/기존 코드의 단위 테스트를 개발하는 것이 현실적이지는 않지만 코드 전진 테스트를하고 싶습니다.

코드 테스트를 작성하는 방법에 대한 예제가 많이 있지만 기존 프로젝트의 코드를 처음부터 새로 작성하는 방법과 개발주기에 통합하는 방법에 대한 예제는 없습니다.

답변

5

간단한 방법 :

  • (... NUNIT, MbUnit에, xUnit의, VS 단위 테스트 프레임 워크) 단위 테스트 프레임 워크 중 하나를 선택 단위 테스트에 대한
  • 추가 프로젝트 솔루션에서 (예를 들어 UnitTests에 대한).
  • 필기 테스트를 시작하십시오.

쉽게 구성하려면 솔루션의 각 프로젝트에 대해 하나 이상의 네임 스페이스를 만듭니다 (예 : UnitTest.Project1, UnitTests.Project2, ...). 프로젝트 크기에 따라 네임 스페이스에 수준을 추가하십시오.

이 테스트 프로젝트는 솔루션의 일부입니다. 지속적인 통합 도구를 사용하면 소스 코드 저장소에 대한 커밋마다 자동으로 테스트를 실행할 수 있습니다.

편집 : "Create unit test" wizard does not work :
단위 테스트를 만드는 MS 단위 테스트 프레임 워크 문제에 대한 의견과 관련하여, 문제를 알고있다. 단위 테스트 마법사가 올바르게 작동하지 않도록 지원되지 않는 프로젝트 유형이있는 것으로 보입니다. 방금 한 F # 및 여러 C# 프로젝트가 하나의 솔루션으로 시도했습니다. 단위 테스트 프로젝트를 추가하고 테스트를 추가하려고했습니다. F # 프로젝트를 언로드 할 때까지 테스트 마법사에 문제가있었습니다. 모든 것이 잘 작동했습니다.

+0

이것은 어리석은 질문 일지 모르지만 유닛 테스트가 VS 2008 IDE에 "구워진"것이라고 생각 했으므로 단위 테스트 프레임 워크가 필요합니까? – CodeKiwi

+0

당신 말이 맞아요. NUnit을 사용하고 있기 때문에 4 년 전 제가 단위 테스트를 시작했을 때 최선의 선택 이었기 때문에 그 것을 잊어 버렸습니다. – zendar

+0

클래스를 마우스 오른쪽 버튼으로 클릭 할 때 "단위 테스트 만들기"컨텍스트 옵션을 사용하여 단위 테스트를 추가하려고 시도했지만 항상 오류가 발생했습니다 (잠시 기억하지 못함).하지만 시각적 소스에 안전하다고 생각됩니다. . – CodeKiwi

1

기존 코드에 대한 단위 테스트를하려면이 책을 읽는 것이 좋습니다 (Working Effectively with Legacy Code). 일반적으로 단위 테스트를위한 베스트 프랙티스에 관한 좋은 책이기도합니다.

기존 프로젝트에서 단위 테스트를 수행 할 수는 있지만 코드를 테스트 할 수 있도록 여기저기서 조정해야합니다. 너무 많은 의존성이 종종 문제입니다.

EDIT (사용자 의견 후) 개발주기에 단위 테스트를 실제로 포함하려면 TDD (Test Driven Development)로 이동해야합니다. 여기에서 목표는 단원 테스트를 먼저 작성하는 것이므로 클래스에서 수행 할 작업을 잘 이해할 수 있습니다. 물론이 테스트는 실패하지만 대상은 하나씩 작업하도록하는 것입니다. TDD에 구글을해라. 정보가 충분하다.

+0

그래, 나는 그것의이 단계에서 그것을 구현하는 작은 쓸데을 알고 있지만, 우리는로 다시 시작할 수있는 기회를 얻고있다 greenfield 프로젝트 .. 건축상의 변화로 인해, 처음부터 단위 테스트를 구현하고 싶다. Id가 머리를 지금부터 시작한다고 생각했다. (그러므로 질문) – CodeKiwi

+0

? 나는 이해하지 못한다 – CodeKiwi

+0

Gerrie, Yes TDD는 우리가 지금 조사하고있는 어떤 것입니다. 제가 지금 실습을하고 싶습니다. – CodeKiwi

3

기존 코드로 테스트를 수행하는 쉬운 방법 중 하나는 버그가 발견되면 테스트를 작성하는 것입니다.

i.전자

  • 찾기 버그
  • 버그에게 recplicates
  • 쓰기 테스트
  • 수정
+0

당신이 단일 목적의 방법 (또는 하나의 목적에 가깝다)을 가지고 있다고 가정한다면, 얼마나 많은 검사가 일반적으로 한가지 방법 당 ball park), – CodeKiwi

+0

"평균"또는 "표준"매개 변수 집합에 대해 하나의 테스트를 수행하고 모든 알려진 경계 조건 (null 매개 변수, 최대/최소 값 ...)에 대한 테스트를 수행해야합니다. – zendar

+0

+1 버그가 아니라 새 코드에 대한 테스트를 작성하십시오. 시간이 지남에 따라 합산됩니다. –