UnitTest




 .NET 응용프로그램을 만들때는 아직 UnitTest 가 익숙하지 않다고 한다. Java 같은 경우에는 UnitTest 가 많이 사용된다고 하는데...  UI에 의존적이지 않은 UnitTest! 간단하게 클래스 라이브러리(DLL) UnitTest 하는 예제이다.


< Class1Test.cs >

두 개의 정수값을 받아 그 합을 리턴하되, 합이 100 보다 작으면 100을 더해서 리턴하는 메소드 이다.

namespace UnitTestDemo_4
{
    public class Class1
    {
        public int AddTo(int i, int j)
        {
            int num = i + j;

            if (num < 100)
                num += 100;

            return num;
        }
    }
}

 


< 단위 테스트 코드 만들기 >

메소드 안에 마우스 커서를 위치 시킨 후 마우스 오른쪽 버튼을 누르면 "단위 테스트 만들기" 라는 팝업 메뉴가 있다. 이 메뉴를 선택해 주자.







테스트 하려는 메소드(AddTo)를 체크 한다.
출력 프로젝트 설정에는 "새 Visual C# 테스트 프로젝트 만들기.." 를 선택한다.





새 테스트 프로젝트 이름을 입력해 준다. 디폴트로 생성된 이름을 그냥 사용하였다.





솔루션 탐색기를 보면 위에서 입력한 프로젝트 이름으로 새로운 프로젝트가 추가 되었다. 테스트 하기 위해선 시작 프로젝트를 새로 생긴 프로젝트(TestProject1) 으로 설정하자. 클래스 라이브러리 자체만으로 실행 할 수는 없으니까.





새로 생긴 프로젝트의 "Class1Test.cs" 파일에 보면 메소드 이름이 "테스트할 메소드 이름 Test"(AddToTest) 메소드가 작성되어 있다. 테스트할 메소드가 받는 두 개의 인수가 명시되어 있는데 이 곳에 직접 입력값을 작성해 준다. expected 변수는 예상되는 리턴값이다. 이 값 역시 예측하여 작성해 준다. 마지막 라인에 Assert.Inconclusive 메소드는 실행 시 에러를 리턴하므로 주석 처리 해주자.





입력값에 대하여 예상된 결과 값이 맞다면 위와 같이 "성공" 이란 결과를 볼 수 있다. 입력값이 Built-In 타입이 아니라 사용자 정의형 이라면 그에 맞게 조금더 수정을 해주면 된다.



< 소스 코드 >

Posted by six605
,