0%

.NET Framework C# NUnit 사용하기, NUnit 사용법, NUnit이란?

nunit

NUnit 이란?

NUnit은 .Net에 대한 단위 테스트 (유닛테스트) 프레임 워크입니다.

사전세팅 : 테스트 대상 프로젝트 생성

  1. Visual Studio에서 File > New > Projet를 선택후, console app (.NET Framework) 을 선택해줍니다.
    nunit

  2. 프로젝트 명, 설치하려는 위치, 솔루션 명, framework 버전을 입력한 뒤, Create를 눌러줍니다.
    nunit

  3. solution explorer에서 프로젝트를 우클릭 한 후, Add > New Item 을 누른 후,
    Caculator.cs 파일을 생성해줍니다.
    nunit

  4. Calculator.cs파일 내용은 아래와 같이 작성해줍니다.
    단순히 더하는 기능만 수행하는 클래스입니다.

1
2
3
4
5
6
7
public class Calculator { 
public int add(int a, int b)
{
return a + b;
}
}

nunit

테스트 프로젝트 생성

  1. 앞선 Calculator 클래스의 메소드가 정상적으로 동작하는지 테스트하는 코드를 작성해보겠습니다.
    .NET 일경우, 솔루션 > add > New Project > NUnit Test Project를 선택해줍니다.
    .NET Framework일 경우, 솔루션 > add > New Project > Unit Test Project(.NET Framework)를 선택해줍니다.
    테스트하려는 프로젝트와 테스트프로젝트의 .NET일지, .NET Framework 버전일지는 반드시 일치하여야 합니다!
    nunit
    nunit

  2. 만들어진 프로젝트를 선택하고, visual studio에서 Tools > Nuget Package Manager > Package Manager console을 클릭해줍니다.
    그러면 명령어를 쓸 수 있는 창이 나오는데요,
    Default Project를 test프로젝트로 선택하고 , 해당프로젝트에 아래 명령어로 두개 패키지를 설치해줍니다.

    1
    2
    install-package NUnit 
    Install-Package NUnit3TestAdapter

    nunit

  3. Test 프로젝트 > Reference 우측클릭 > Add Reference > Projects에 포함하려는 프로젝트를 선택해줍니다.
    nunit
    nunit

  4. 테스트프로젝트의 UnitTests.cs 파일에
    아래와 같이 작성해줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

using NUnit.Framework;
using System;

namespace UnitTestProject1
{
[TestFixture()]
public class UnitTest1
{
[Test()]
public void addTest()
{
//given
Calculator cal = new Calculator();

//when & then
Assert.That(cal.add(1, 2).Equals(3));
}
}
}

nunit

테스트 수행하기-첫번째 방법 : visual studio 사용

visual studio 상단메뉴에서 Test > Run All Tests를 누르시면 작성하신 테스트를 실행할 수 있고, 결과를 확인할 수 있습니다.
nunit

테스트 수행하기-두번째 방법 : 커맨드창

  1. https://nunit.org/download/ 에서 NUnit Console을 다운받아줍니다.
    nunit
    nunit
    zip파일 기준 압축을 풀고, 아래와 같은 커맨드를 작성해주면 됩니다.
    1
    2
    3
    {nunit3-console.exe 위치} {실행하려는 솔루션} --output={결과물경로}
    -- 예
    nunit3-console.exe "D:\workspace\solution .sln" --output="result.txt"^
    그 외에도 nunit console에 대한 기타 옵션은 아래에서 참고가능합니다.
    https://github.com/nunit/nunit-console/wiki/Console-Command-Line

총평

C# unit test framework로 MStest / xUnit / NUnit 이 나오는데,
환경 세팅하고 테스트하는데 다른 프로그래밍언어에 비해 꽤나 힘든거 같습니다.
mstest를 쓰지니 제한되는게 많아서 xUnit이나 NUnit을 쓰는데,
xUnit이나 NUnit은 오픈소스이나 visual studio는 오픈소스가 아니라 뭔가 개발에 제약사항이 생겨서 이렇게 된게 아닐까 싶습니다.
이러한 경험 포함, 사실 저는 C#을 선호하지는 않습니다.
사내에서 C#으로 된 legacy project를 관리하고 있는데 이렇게 사용하기 어려운사례들이 종종 있어서 썩 기분좋은 경험은 아닌거 같습니다.
그래도 cobol, 델파이, vb같은 더 구식인 소스를 안 다룬다는 점이 위안이 되지 않을까 생각해봅니다.