본문 바로가기

Silverlight

UnitTest 맛보기

개요

이번에는 UnitTest 를 맛보기로 하겠습니다. 유닛 테스트는 Method 단위로 Test가 가능 하고 여러 Method를 한번에 테스트 하고
테스트 결과를 알수 있는 테스트 방법 입니다. 이렇게 테스트가 무사히 통과한 Method들에 대해서는 좀더 믿고 쓸수 있겠지요?

내용

1. 우선 프로젝트를 하나 추가 합니다. 저는 이름을 UnitTest 라고해서 만들었습니다. 그리고 만들어지 프로젝트에서 page는 제거를 해줍니다.

2. 2개의 dll UnitTest 에 References 에 추가해 주어야 하는데 dll은 소스안에 포함 되여있습니다.
Microsoft.Silverlight.Testing.dll
Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight
를 추가해주면 됩니다.

3. App.xmam.cs 에서

private void Application_Startup(object sender, StartupEventArgs e)
   {
       this.RootVisual = new Page();
   }

이부분을

private void Application_Startup(object sender, StartupEventArgs e)
{
     UnitTestSettings setting =   UnitTestSystem.CreateDefaultSettings();

     this.RootVisual = UnitTestSystem.CreateTestPage();
 }

                                                                   이렇게 바꿔 줍니다.



image4.UnitTest를 실행 하기 위한 Class를 하나 추가 해줍니다 저는 Test 라는 이름의 클래스를 하나 만들었습니다.

5.그리고 실제 프로젝트 여기서는 UnitTest2에다가 Date를 받아서 체크 해주는 클래스를 하나 생성해 주도록 하겠습니다.

public bool IsCorrectDate(DateTime date,DateTime minDate,DateTime maxDate)
{
    if (date < minDate || date > maxDate)
        return false;
    return true;
}

CheckDate 에는 간단하게 3개의 DateTime을 받아서 날짜가 범위안에 잘들어가는지를 체크 해주는 간단한 Method가 있습니다.

6.UnitTest 에 있는 Test.cs 에

[TestClass]
public class Test
{
    [TestMethod]
    public void DateCheck()
    {
        CheckDate dateCheck = new CheckDate();
        DateTime minDate = new DateTime(2009,1,25);
        DateTime maxDate = new DateTime(2009,5,10);
        DateTime date = DateTime.Now;

        Assert.IsTrue(dateCheck.IsCorrectDate(date,minDate,maxDate));
    }
}

이와같이 태스트를 위한 Method를 하나 작성해 줍니다. 내용은 CheckDate 에 있는 IsCorrectDate 함수에 3개의 값을 넘겼을때 돌아오는 값이 True 인지를 Test 해주는 Method 입니다.
여기서 테스트를 위한 클래스에는 [TestClass]를 Method 위에는 [TestMethod]를 적어줍니다.

7.UnitTest 프로젝트를 Set as Startup Project 로 설정해주고 컴파일을 합니다. 컵파일 시에 디버깅으로 돌리면 Test가 실패한 부분들에 대해서 걸리므로 Start With out Debuggin (Ctrl + F5)로 실행을 해줍니다.


결과 화면

Test가 통과한 화면                                      

image 

Test를 실패한 화면

image

소스