HaPpY hApPy

1. NUnit 으로 작성하는 첫 Unit Testing! 본문

.NET/Unit Test

1. NUnit 으로 작성하는 첫 Unit Testing!

juniguya 2014. 8. 15. 23:04


FileExtension_1[Test].zip


일단 크고 복작한거 다 필요 없다.


가장 간단한 예제를 보면 대충 감이 온다.


먼저 테스트를 해야 되는 코드를 구현한다.

  1. Class Library 프로젝트를 하나 생성하고 이름을 FileExtension 으로 정한다.
  2. 자동으로 생성되는 class1.cs 파일 이름을 바꾼다  => CFileExtension.cs (만약 자동으로 생성되지 않으면 하나 생성한다)
  3. 바꾼 파일을 아래와 같이 코딩한다.
namespace FileExtension
{
    public class CFileExtension 
    {
        public bool IsValidFileExtension(string fullFileName)
        {
            if (fullFileName.EndsWith(".BUG")) //"BUG" 다 대문자
            {
                return true;
            }

            return false;
        }
    }
}

위 코드는 테스트 "당하는" 코드이고, 이 코드를 테스트 "" 코드, 즉 "Unit Test"를 작성하자.

참고로, 새로운 Solution을 생성할 때 마다 새로 NUnit의 dll을 불러오던지 아니면 이전에 배웠던 NuGet Package Manager를 통해서 다시 설치해야 된다. 일단 아래 방법으로 따라 해 보자, 그럼 감이 올것이다.

  1. Class Library 프로젝트를 하나 생성하고 이름을 FileExtension_UnitTests 로 정한다.
  2. 자동으로 생성되는 class1.cs 파일 이름을 바꾼다  => CFileExtensionTester.cs (만약 자동으로 생성되지 않으면 하나 생성한다)
  3. 위에 먼저 생성한 CFileExtension 프로젝트 Reference를 추가한다.
  4. 바꾼 파일을 아래와 같이 코딩한다. [에러가 발생해도 일단 따라 적자]
  5. using FileExtension;
    using NUnit.Framework;
    
    namespace FileExtension_UnitTests
    {
        [TestFixture] // NUnit Test를 하는 클래스
        public class CFileExtensionTester
        {
            [Test] // 해당 메소드를 테스트 하는 방법들 중 하나. 추후 하나씩 더 나올것이다.
            public void IsValidExtension_BadExtension_ResultTrue()
            { //함수 이름은 테스트함수명_테스트목록_Pass에필요한조건
               //(false가 되어야 하면 ResultFalse로 주면됨)
                CFileExtension analyzer = new CFileExtension();
             
                bool result = analyzer.IsValidFileExtension("SomeFile.Bug"); // "Bug" B만 대문자.
    
                Assert.True(result); //여기서 Assert는 NUnit.Framework의 Assert 클래스다.
            }
        }
    }
  6. 이전 장에서 배운 방법으로 NUnit, NUnit.Runners, NUnit Test Adapter for Vs2012 and Vs2013을 설치하자.설치할 때 Install을 누르면 아래와 같이 선택창이 나오면 FileExtension_UnitTests만 선택하자.
  7. 설치하면 에러가 나던 코드들이 Reference 추가로 인해 에러가 발생하지 않는것을 확인하자.

위에서 NUnit Test Adapter for VS2012 and VS2013 을 설치했을 경우 (아닌 경우 스크롤을 내려보잡!)

  1. 먼저 빌드를하고 에러가 없는지 확인후 메뉴에서 Test->Windows->Test Explorer 를 클릭하자. 
  2. 아래와 같이 창이 뜨면 Run All 을 눌려서 NUnit Testing 를 하자.


결과가 fail이다..왜 그럴까??? ...이유는 소스코드를 자세히 들여다 보면 알수있다. 

"SomeFile.Bug" 라고 한 부분의 Bug를 BUG로 고쳐서 다시 빌드를 하고 Run All을 눌려보자.


테스트가 pass한것을 확인 할 수 있다....구웃!


Tip!

매번 빌드때 마다 자동으로 Test를 진행하고 싶으면. 해당 버튼을 활성화 하면된답..그럼 매 빌드시 자동으로 실행된다.



위에서 NUnit Test Adapter for VS2012 and VS2013 을 설치하지 않은 경우.

현재 수정중인 프로젝트의 최상위 폴더에 들어가면 packages라는 폴더가 생성되어 있을 것이다. 

packages->NUnit.Runners.2.6.3 ->tools 를 차례로 열고 nunit.exe를 실행시키자. (현재 버전은 2.6.3)


  1. File -> Open Project 를 클릭하고 FileExtension_UnitTests.dll 을 선택하자.
  2. 아래와 같이 해당 프로젝트가 불려오고 원하는 프로젝트를 선택후 Run을 누르자.

결과는 실패다! 왜 그럴까??? 갑자기 글적는게 If문 적은것 같은 느낌이다..이유는 "SomeFile.Bug" 라고 한 부분의 "Bug"를 "BUG"로 고쳐보면 알수있다...프로젝트를 다시 빌드하고 NUnit 에서 Run을 다시 눌려보자 (빌드후 약간의 시간차를 두고 해야된다)


그럼 아래와 같이 통과하는것을 볼 수 있답!  구웃드!


이렇게 첫 NUnit Test는 끝!!