nunit 사용 안내서-NUnit Quick Start

NUnit 는.NET 프레임 워 크 를 위 한 오픈 소스 유닛 테스트 프레임 워 크 입 니 다.NUnit 는 원 하 는 언어 로 테스트 를 작성 하여 프로그램의 특정한 기능 을 테스트 할 수 있 습 니 다.코드 를 처음 작 성 했 을 때 유닛 테스트 는 코드 기능 을 테스트 하 는 좋 은 방법 입 니 다.프로그램 에 대한 회귀 테스트 방법 도 제공 합 니 다.NUnit 응용 프로그램 은 유닛 테스트 를 작성 하 는 프레임 워 크 와 이 테스트 를 실행 하고 결 과 를 보 는 그래 픽 인터페이스 를 제공 합 니 다.  다운로드 주소:http://sourceforge.net/projects/nunitaddin  본 사례 에 사 용 된 버 전:http://www.cnblogs.com/Files/young18/nunit2.3.rar
NUnit Quick Start 원본 문서:http://www.nunit.org이 인 스 턴 스 는 초기 nunit 버 전에 서 찾 을 수 있 습 니 다.테스트 구동 개발 에 있어 서 좋 은 예 는 아니 지만 nunit 를 사용 하 는 가장 기본 적 인 방법 을 설명 할 수 있 습 니 다.
   지금부터 우리 의 예.만약 에 우리 가 은행업 의 응용 프로그램 을 쓰기 시작 하면 우 리 는 기본 적 인 유형 인 Account,Account 는 주로 자금 의 증가,취소 와 이 체 를 책임 집 니 다.다음은 이런 코드 입 니 다.
 1 namespace bank 2 { 3     public class Account 4      { 5         private float balance; 6         public void Deposit(float amount) 7          { 8               balance+=amount;     9         }10 11         public void Withdraw(float amount)12          {       13               balance-=amount;     14         }15 16         public void TransferFunds(Account destination, float amount)17          {     }18 19         public float Balance20          {       21               get { return balance;}     22         }23     }24 }    테스트 가 필요 한 클래스 인 AccountTest 를 작성 하 겠 습 니 다.첫 번 째 테스트 방법 은 Transfer Funds 입 니 다.
 1 namespace bank 2 { 3     using NUnit.Framework; 4  5     [TestFixture] 6     public class AccountTest 7      { 8         [Test] 9         public void TransferFunds()10          {11             Account source = new Account();12             source.Deposit(200.00F);13             Account destination = new Account();14             destination.Deposit(150.00F);15             source.TransferFunds(destination, 100.00F);16             Assert.AreEqual(250.00F, destination.Balance);17             Assert.AreEqual(100.00F, source.Balance);18         }19     }20 }   현재 하 는 첫 번 째 일 은 이 클래스 에[TestFixture]속성 이 있다 는 것 을 설명 하 는 것 입 니 다.이 방법 을 통 해 테스트 코드(이 속성 은 계승 할 수 있 습 니 다)를 표시 합 니 다.이 클래스 는 반드시 Public 클래스 이 고 파생 내 에 제한 이 없습니다.이 클래스 는 당연히 기본 구조 함수 가 있어 야 합 니 다.   이러한 유일한 방법 인 Transfer Funds 는[Test]속성 이 있 습 니 다.그 는 테스트 방법 임 을 보 여 줍 니 다.이 방법 은 void 로 돌아 가 고 매개 변수 가 없습니다.이 방법 에서 우 리 는 테스트 대상 을 초기 화 했 습 니 다.Assert 류 는 몇 가지 방법의 집합체 를 정 의 했 습 니 다.이 를 통 해 설정 조건 을 검 측 했 습 니 다.우리 의 예 에서...저 희 는 AreEqual 방법 으로 뒤의 두 계 정의 계좌 이체 가 모두 정확 한 잉여 자금 을 확보 합 니 다.(이것들 은 재 업로드 방법 입 니 다.이 예 에서 사용 하 는 버 전 은 다음 과 같은 몇 가지 매개 변 수 를 포함 하고 첫 번 째 매개 변 수 는 기대 치 이 며 두 번 째 시험 은 진실 치 입 니 다)  이 예 를 컴 파일 하여 실행 합 니 다.만약 에 당신 의 코드 를 bank.dll 로 컴 파일 하고 NUnit Gui 를 실행 하 며 File->Open menu item 을 선택 하여 방금 컴 파일 한 dll 파일 을 불 러 옵 니 다.run 을 누 르 면 테스트 바 가 빨간색 으로 변 하 는 것 을 볼 수 있 습 니 다.테스트 가 실 패 했 습 니 다."Errors and Failures"패 널 에 정 보 를 표시 합 니 다.       TransferFunds : expected <250> but was <150>  이 현상 은 우리 가 기대 하 는 것 입 니 다.테스트 실패 의 원인 은 우리 가 TransferFunds 방법 을 실현 하지 못 했 기 때 문 입 니 다.지금부터 우 리 는 그것 을 일 하 게 하고 당신 의 TransferFunds 방법 을 다음 과 같이 수정 합 니 다.
1 public void TransferFunds(Account destination, float amount)2 {3     destination.Deposit(amount);4     Withdraw(amount);5 }  이제 우 리 는 코드 를 다시 컴 파일 하고 GUI 에서 실행 합 니 다.우 리 는 어떻게 테스트 줄 이 녹색 으로 변 하 는 것 을 볼 수 있 습 니까?테스트 성공!  저 희 는 Account 코드 에 오류 검 사 를 추가 하여 balance 에 최소 치 를 설정 합 니 다.순서대로 자금 당좌대월 을 보호 합 니 다.
1 private float minimumBalance = 10.00F;2 public float MinimumBalance3 {4     get { return minimumBalance;}5 }  당좌대월 을 나타 내 는 이상 추가 하기;
1 public class InsufficientFundsException : ApplicationException2 {3 }  AccountTest 클래스 에 테스트 방법 추가
 1 [Test] 2 [ExpectedException(typeof(InsufficientFundsException))] 3 public void TransferWithInsufficientFunds() 4 { 5     Account source = new Account(); 6     source.Deposit(200.00F); 7     Account destination = new Account(); 8     destination.Deposit(150.00F); 9     source.TransferFunds(destination, 300.00F);10 }  이 테스트 방법의[Test]속성 은[Expected Exception]속성 이 있 습 니 다.이것 은 이 테스트 코드 가 특정한 유형의 이상 을 기대 하고 있 음 을 나타 냅 니 다.만약 에 이런 이상 이 실행 과정 에 나타 나 지 않 았 다 면 이 차 는 실 패 했 습 니 다.현재 코드 를 컴 파일 하고 NUnit Gui 를 시작 합 니 다.이것 은 테스트 항목 이 빨 개 지고 오류 정 보 를 알려 줍 니 다.        TransferWithInsufficentFunds : InsufficientFundsException was expected  Account 의 코드 를 다시 설정 하여 이상 을 던 지게 하고 아래 의 실례 에 따라 TransferFunds 방법 을 수정 합 니 다.
1 public void TransferFunds(Account destination, float amount)2 {3     destination.Deposit(amount);4     if(balance-amount < minimumBalance)5         throw new InsufficientFundsException();6     Withdraw(amount);7 }  컴 파일,실행 테스트-테스트 바 가 녹색 으로 변 하여 성공 하 였 습 니 다.그러나 우 리 는 이 코드 를 보 았 습 니 다.우 리 는 단지 우리 가 볼 수 있 는 이체 작업 중의 오 류 를 썼 을 뿐 입 니 다.지금 우 리 는 테스트 를 써 서 우리 의 불확실 한 오 류 를 증명 하고 다음 테스트 방법 을 추가 합 니 다.
 1 [Test] 2 public void TransferWithInsufficientFundsAtomicity() 3 { 4     Account source = new Account(); 5     source.Deposit(200.00F); 6     Account destination = new Account(); 7     destination.Deposit(150.00F); 8     try 9      {10         source.TransferFunds(destination, 300.00F);11     }12     catch(InsufficientFundsException expected)13      {14     }15     Assert.AreEqual(200.00F,source.Balance);16     Assert.AreEqual(150.00F,destination.Balance);17 }   컴 파일 운행-빨간색 테스트 바,우 리 는 300 위안 을 잘못 계산 하 였 습 니 다.코드 는 정확 한 결 과 를 150 위안 으로 표시 하 였 으 나,계 정 은 확실히 450 위안 으로 표시 되 었 습 니 다.그러면 어떻게 오 류 를 고 칠 수 있 습 니까?최소 펀드 검 사 를 추가 하여 자금 처리 전에 할 수 있 습 니까?우 리 는 catch 블록 에 수리 방법 을 추가 하거나 관리자 의 복구 대상 에 대한 규정 에 의존 할 수 있 습 니 다.우 리 는 여러 가지 측면 에서 이런 질문 에 대답 해 야 합 니 다.그러나 지금 이 아 닙 니 다.그 사이 에 우 리 는 어떻게 할 수 있 습 니까?옮 겨?가장 좋 은 방법 은 그것 을 무시 하고 테스트 방법 에 다음 속성 을 추가 하 는 것 이다.
1 [Test]2 [Ignore("Decide how to implement transaction management")]3 public void TransferWithInsufficientFundsAtomicity()4 {5     // code is the same6 }   테스트 코드 인 노란색 을 컴 파일 하고"Tests Not Run"을 누 르 면 bank.Account Test.Transfer With InsufficientFundsAtomicity()가 무시 되 는 테스트 목록 에 있 는 것 을 볼 수 있 습 니 다.  위 에 자주 사용 되 는 간단 한 방법 입 니 다.순서대로 nunit 의 사용 과정 을 설명 합 니 다.앞으로 의 단원 에서 우 리 는 nunit 의 사용 을 깊이 설명 할 것 입 니 다!

좋은 웹페이지 즐겨찾기