White Whale Studio

[Nunit] 테스트 해보기 본문

IT Engineering/C#.net

[Nunit] 테스트 해보기

glorymind 2016. 8. 12. 17:42
반응형

지난번 Nunit 포스팅에서는 VS2010에서의 Nunit 설정에 대해서  살펴보았습니다.


이번 포스팅에서는 소스를 보면서 해보도록 하겠습니다.


우선 테스트 프로젝트를 생성하실때는 클래스 라이브러리로 생성해줍니다.


nunit.framework.dll 을 참조해주시구요.


다음으로 코딩을 해보겠습니다.


준비물은 

1. 테스트할 클래스 (대상 클래스)

2. 테스트 케이스 클래스 (테스트 결과를 확인할 수 있는 클래스)


가 되겠습니다. 


우선 테스트할 소스를 볼까요.


1
2
3
4
5
6
7
8
9
10
11
12
    public class Calculator
    {
         public int Add(int a, int b)
        {
            return a + b;
        }
 
        public int Sub(int a, int b) 
        {
            return a - b;
        }
    }
cs


간단하게 Add 와 Sub 메서드를 가지는 클래스입니다.

실제로 테스트할 메서드는 겁나 복잡하겠죠?


아무튼, 위의 Calculator 클래스가 1. 테스트할 소스 코드입니다.


다음은 테스트 케이스 클래스 입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
    [TestFixture]
    public class CalculatorTest
    {
        [Test]
        public void AddTest()           // Add Method Test
        {
            Calculator car = new Calculator();
            int result = car.Add(34);         // 3 + 4
            int expected = 7;                   // 기대 값 7
 
            Assert.AreEqual(expected, result); // 값 비교
        }
 
        [Test]
        public void SubTest()           // Sub Method Test
        {
            Calculator car = new Calculator();
            int result = car.Sub(102);        // 10 - 2
            int expected = 8;                   // 기대 값 8
 
            Assert.AreEqual(expected, result); // 값 비교            
        }
 
        [Test]
        public void SubTest2()           // Sub Method Test
        {
            Calculator car = new Calculator();
            int result = car.Sub(220);        // 10 - 2
            int expected = -18;                   // 기대 값 8
 
            Assert.AreEqual(expected, result); // 값 비교
        }
    }
cs


위에 TestFixture와 Test Attribute는 Nunit에서 사용되는 Attribute 입니다. MSTest에서는 다르더군요.

이 부분이 잘못되면 당연히 에러가 발생하므로 주의하시기 바랍니다.


AddTest()를 살펴보면

Calculator 클래스에서 인스턴스를 생성하고 Add 메서드를 호출합니다.


소스코드에서 보시듯이 직관적입니다.


메서드에서 Add 메서드를 작업한 결과물이 result에 저장되고

제가 계산했을 때 결과값으로 예상했던 결과물인 7을 expected에 넣었습니다.


그리고 마지막으로 Assert.AreEqual(expected, result); // 값 비교

를 통해서 테스트할 클래스에서 계산한 결과와 제가 예상한 결과값이 맞는가? 확인해서 반환합니다.


Nunit 테스트 화면에서는 이 결과값이 맞다면 녹색으로 아니라면(또는 뭔가 에러가 있다면) 빨간색으로 표시됩니다.


위에서 SubTest는 잘못된 케이스를 보여드리기 위해 일부러 expected 값을 틀리게 넣었습니다. 

이것과 같이 값이 상이한가를 확인해서 Nunit 테스트 창에서 확인할 수 있습니다.

어떤 값이 잘못되었는지, 어떤 메서드에서 문제가 발생했는지 확인 가능합니다.

비교하는 메서드는 종류가 많고 저도 아직 익숙지 않은지라 소개정도만 하였습니다.


아, 그리고 또 한가지

소스코드를 수정하고 Nunit에서 확인할 때는 빌드를 수행하신 뒤 하셔야 적용된 소스코드로 테스트 하실 수 있습니다.


자세한 내용은 Nunit 홈페이지에서 참조하시기 바랍니다.



반응형
Comments