1. 도구개요 소개.NET기반(c#, F#, C++ 등 ) 을위한테스팅을위한프레임워크로, 단위모듈 (ex: Method) 이정확히구현되었는지를 확인할수있는도구 주요기능 Unit Test, System Test 카테고리 세부카테고리테스트설계및실행 커버리지 Unit (.NET) 도구난이도중 라이선스형태 / 비용 zlib/libpng License / 무료사전설치도구.Net Framework 운영체제 Windows(98 이상, NT 이상 ) 최신버전 2.6.2 (2012. 10) 특징.NET환경에서단위테스트지원 TDD 지원으로인한프로세스누락중복, 이상여부확인, 테스트코드를통한프로세스파악이용이 적용회사 / 프로젝트 - 관련도구 제작사 공식홈페이지 JUnit,.Net Framework.org http://.org 1
2. 기능요약 요구사항들을기록하고이들을 JUnit Test Case 와매치함으로써프로세스를단순화 주요기능단위테스트프로그래밍언어지원시스템테스트 GUI / Console 파라미터가있는메소드의테스트 TDD 지원여부지원 F#, C#, C++ 등닷넷환경지원모두지원 2.5버전이상부터지원지원 1
3. 도구실행환경.Net 을위한단위테스트 Open source JUnit 의.NET 형태 개별 dll 테스트케이스테스트수행에는 UI 만으로실행 / 테스트가능 Windows 98 이상 테스트케이스생성부터부가적인모든기능은 Windows 기반의.NET 환경에의존.Net Framework 1.1, 2.0 모두지원 Windows 98 이상 (XP, ME, 7), Windows NT 이상 ( 개별 DLL 사용 ).NET 을지원하는 IDE.NET Framework Windows 1
4. 도구설치방법 세부목차 4.1 다운받기 4.2 설치하기 4.3 설치확인하기 1
4. 도구설치방법 4.1 다운받기 http://www.nunit.org/index.php?p=download 에서 다운받기 -2.6.2.msi 를눌러다운로드 2
4. 도구설치방법 4.2 설치하기 (1/3) 설치 : 실행직후 Next 클릭 3
4. 도구설치방법 4.2 설치하기 (2/3) 설치 : 약관동의 약관에동의하고 Next 4
4. 도구설치방법 4.2 설치하기 (2/3) 설치 : 설치설정 일반 (Typical) 설치 : 필요에따라 Custom 및전체 Complete 설치가능 5
4. 도구설치방법 4.2 설치하기 (3/3) 설치 : 설치최종확인 Install 을누르면바로설치, 수정사항이있을시 Back 을눌러수정가능 6
4. 도구설치방법 4.2 설치하기 (3/3) 설치 : 설치완료 Finish 를누르면설치완료 7
4. 도구설치방법 4.3 설치확인하기 설치결과파일 : C:\Program Files\ 2.6.2\bin 개발중테스트시추가할 DLL 라이브러리가위치, 실행파일은 UI, Console 등여러형태테스트지원 8
4. 도구설치방법 4.3 설치확인하기 을실행하여설치결과를확인 9
5. 도구기능소개 세부목차 5.1 주요기능 5.2 Nunit의기능소개 5.3 프로젝트생성 5.4 Reference 추가하기 5.5 테스트코드작성 5.6 NUit실행 / 결과 1
5. 도구기능소개 5.1 주요기능 JUnit과비를이용하여요구사항을작성 를이용하여 JUnit의 TestCase메소드와요구사항의연결이가능 요구사항의구현여부를 Report로확인 GUI, Console환경상관없이모두테스트가능 2
5. 도구기능소개 5.2 의기능 (1/12) 프로젝트생성및기존프로젝트 / 파일열기 New Project : *.nunit 형태의프로젝트생성, 프로젝트는관련된환경이나내용을포함 OpenProject : 기존의 (*.nunit) 프로젝트나 을통해생성된 DLL 파일을읽어옴 3
5. 도구기능소개 5.2 의기능 (2/12) 테스트실행 : Run 읽어온프로젝트 / 테스트라이브러리를젂부실행 4
5. 도구기능소개 5.2 의기능 (3/12) 테스트의선택 테스트항목선택 : 실행테스트선택 Run 테스트를수행할일부메소드만선택시일부메소드만선택 5
5. 도구기능소개 5.2 의기능 (4/12) 테스트의선택 실패한메소드만선택 : Run Check Failed Fail 된메소드만체크, IgnoredTest 항목및정상항목은체크되지않음 6
5. 도구기능소개 5.2 의기능 (5/12) 오류보고 : Errors And Failures Fail( 오류가발생하거나정해진테스트케이스기대값에어긋나는항목 ) 출력 7
5. 도구기능소개 5.2 의기능 (6/12) 오류보고 : Test Not Run 테스트가수행되지않은부분에대한설명및사유표시 8
5. 도구기능소개 5.2 의기능 (7/12) View : 의 UI 설정 의젂체 UI 설정하는메뉴 Full GUI : 기본 GUI 형태 Mini GUI : 트리형태의 GUI Result Tab : 3 개의탭표시유무» Errors And Failures» Test Not Run» Text Output Tree : 메소드트리를설정 GUI/Fixed Font : 도구의 Font 설정 Status Bar» 하단상태바보임유무설정 9
5. 도구기능소개 5.2 의기능 (8/12) Project : 현재 프로젝트환경설정 Configration : 개별설정을추가및저장 Add Assembly : 프로젝트에테스트할 dll, exe 파일추가 Edit : 현재 의환경설정 10
5. 도구기능소개 5.2 의기능 (9/12) Tests : 실행에관한설정 젂체실행 (Run All), 선택실행 (Run Selected), 실패한부분만실행 (Run Failed), 실행중정지 (Stop Run) 11
5. 도구기능소개 5.2 의기능 (10/12) Tools : 부가기능및테스트설정 로그파일확인, XML 로저장, Tool 설정, Addin 등설정가능 12
5. 도구기능소개 5.2 의기능 (11/12) 실행중인테스트의디버그 Visual Studio 의 Debug Attach to process 13
5. 도구기능소개 5.2 의기능 (12/12) 실행중인테스트의디버그 실행중인 을선택 Attach 후실행 14
5. 도구기능소개 5.3 프로젝트생성 (1/2) Visual Studio 를실행하고 Project 를하나생성 프로젝트명은 Tutorial 로정의 15
5. 도구기능소개 5.3 프로젝트생성 (2/2) Class Library 프로젝트추가생성 [ 설치폴더 ]/bin/net-2.0/framework/nunit.framework.dll 를 Tutorial.Tests 폴더에복사 자동으로복사후컴파일수행 SVN, Mercurial, Git 등의버젂관리시스템을사용했을때, 즉시컴파일이되는추가효과 Add Reference 를통해레퍼런스추가 16
5. 도구기능소개 5.4 Reference 추가하기 (1/2) Reference 추가 References 마우스우클릭 Browse nunit.framework.dll 선택 확인해줍시다 Add 적용확인 Close 17
5. 도구기능소개 5.4 Reference 추가하기 (2/2) Reference 추가 Projects 에 Tutorial Reference 추가 18
5. 도구기능소개 5.5 테스트코드작성 테스트코드작성 기본으로추가되어있는 Class1 작성 using System; using System.Collections.Generic; using System.Linq; using System.Text; using.framework; namespace Tutorial.Tests { [TestFixture] public class Class1 { [Test] public void Test1() { } } 19
5. 도구기능소개 5.6 NUit 실행 / 결과 실행 : [ 설치폴더 ]/bin/net-2.0/nunit-x86.exe 를실행 New Project Project 생성 Tutorial.Tests 에저장 Project Add Assembly Tutorial.Tests/bin/Debug/Tutorial.Tests.dll 을추가 20
6. 도구활용예제 세부목차 6.1 예제소개 6.2 테스트환경설정 6.3 예제1 데모코드작성 6.4 예제1 GUI 실행 6.5 예제2 테스트코드작성 6.6 예제2 테스트코드실행 6.7 예제2 테스트코드수정 6.8 예제2 수정된테스트코드실행 1
6. 도구활용예제 6.1 예제소개 예제시스템 1 : 잔액체크테스트 (C#) 잔액에입금, 출금에따라잔액을계산하고저장 테스트수행을위해잘못된액수를시도하고, 테스트결과정상적으로나오는지확인 예제시스템 2 : 환경테스트 (C#, Visual Basic) 샘플예제를사용한 C#, Visual Basic 샘플테스트 2
6. 도구활용예제 6.2 테스트환경설정 (1/2) 프로젝트를생성하고, 참조를추가 3
6. 도구활용예제 6.2 테스트환경설정 (2/2) NNunit Framework 선택 4
6. 도구활용예제 6.3 예제 1 데모코드작성 테스트데모코드작성 using System; using.framework; namespace bank { public class Account { private float balance; public void Deposit(float amount) { balance += amount; } { } { public void Withdraw(float amount) balance -= amount; public void TransferFunds(Account destination, float amount) } public float Balance { get { return balance; } } } } namespace bank { [TestFixture] public class AccountTest { [Test] public void TransferFunds() { } } Account source = new Account(); source.deposit(200.00f); Account destination = new Account(); destination.deposit(150.00f); source.transferfunds(destination, 100.00F); Assert.AreEqual(250.00F, destination.balance); Assert.AreEqual(100.00F, source.balance); [Test] public void DepositFunds() { Account source = new Account(); source.deposit(200.00f); Assert.AreEqual(200.00F, source.balance); } } namespace UnitTestDemo { public class MyAccountingSoftware { public static void Main() { bank.account DemoAccount = new bank.account(); DemoAccount.Deposit(1000.00F); DemoAccount.Withdraw(500.50F); Console.WriteLine("Our account balance is {0}", DemoAccount.Balance); } } } 5
6. 도구활용예제 6.4 예제 1 GUI 실행 (1/3) 도구 외부도구클릭 추가를눌러 에대한속성지정 실제설치된 의실행파일의경로지정 6
6. 도구활용예제 6.4 예제 1 GUI 실행 (2/3) 추가가된 을활용하여테스트수행 7
6. 도구활용예제 6.4 예제 1 GUI 실행 (3/3) 테스트결과확인, 오류를파악하고수정 8
6. 도구활용예제 6.5 예제 2 테스트코드작성 (1/2) C# 에서예제코드작성 5 가지테스트 (3 개의다른기대값, 1 오류, 1 Ignore) 9
6. 도구활용예제 6.5 예제 2 테스트코드작성 (2/2) VB 에서예제코드작성 동일한알고리즘으로작성후 Build 10
6. 도구활용예제 6.6 예제 2 테스트코드실행 (1/2) C# 에서만든테스트코드실행결과 Build 결과작성된 dll 파일로테스트수행 11
6. 도구활용예제 6.6 예제 2 테스트코드실행 (2/2) VB 에서만든테스트코드실행결과 Build 결과작성된 dll 파일로테스트수행 12
6. 도구활용예제 6.7 예제 2 테스트코드수정 (1/2) C# 에서젂체오류중 2 개를수정 2 개의기대값을수정하고작성후 Build 13
6. 도구활용예제 6.7 예제 2 테스트코드수정 (2/2) VB 에서젂체오류중 2 개를수정 2 개의기대값을수정하고작성후 Build 14
6. 도구활용예제 6.8 예제 2 수정된테스트코드실행 (1/2) C# 에서일부수정된오류코드실행결과 Build 결과 2 개는 Passed, 이외의테스트는 Fail 15
6. 도구활용예제 6.8 예제 2 수정된테스트코드실행 (2/2) VB 에서일부수정된오류코드실행결과 Build 결과 2 개는 Passed, 이외의테스트는 Fail 16
7. FAQ 질문 1) 의형태는 IDE 확장, 라이브러리, 별도의실행되는도구중어떤건가요? 답변 1 : 설치버전에서도 dll 파일은제공됩니다. IDE 에서확장될수도있으며, 라이브러리형태로도제공이되며, 프로젝트산출물을활용하여테스트를수행할수도있습니다 질문 2) 이 Visual Studio 에기본탑재된다는말이있던데사실인가요? 답변 2 : 아닙니다. 원래는기본탑재한다는계획이있었었습니다만, 현재기본탑재되지않고있습니다. 1
8. 도구평가 활용성 단순한설치만으로.NET 환경에서바로사용 범용성 C# F# C++ 모두지원하며 GUI, Console 모두테스트가가능 호환성.NET 환경에서 1.1 2.0 모두지원 성능 다른테스트도구들에비해쉽고간편하며빠름 기타 JUnit의.NET버전이라불릴만큼용이함 도구평가의견 TDD 의적용으로프로세스누락, 이상여부확인, 테스트코드를통한프로세스파 악이용이 장애파악이빠르고용이 자동화및개발프로세서에포함시키기용이 1
9. 용어정리 본매뉴얼에서사용하고있는용어의정리.NET Framework 마이크로소프트에서개발한윈도프로그램개발및실행환경이다. 네트워크작업, 인터페이스등의많은작업을캡슐화하였고, 공통언어런타임 (Common Language Runtime)(CLR) 이라는이름의가상머신위에서작동 1