17
CÔNG CỤ KIỂM THỬ NUNIT 1.1. Giới thiệu NUnit là một tool mới ,có nhiều version khác nhau,trong đó NUnit version 2.5 mới phát hành vào tháng 2/2008 nên cũng còn mới lạ với nhiều người,đặc biệt phiên bản này hỗ trợ cho bộ .NET frameword của Microsoft. NUnit kiểm tra đơn vị với các ngôn ngữ lập trình của Microsoft. NET. Nó được viết hoàn toàn bằng C # và đã được hoàn toàn thiết kế lại để tận dụng lợi thế của nhiều tính năng ngôn ngữ NET. Nhóm phát triển NUnit hiện nay bao gồm Charlie Poole, Jamie Cansdale và Gary Feldman, James W. Newkirk, Alexei A. Vorontsov, Michael C. Hai và Philip A. Craig, Doug de la Torre, David White, Ethan Smith, Al Gonzalez, Ron Jeffries, và Rob Jeffries. NUnit có hai cách khác nhau để chạy chương trình thử nghiệm: - Console runer:NUnit –console.exe là khởi chạy nhanh nhất nhưng không phải là tương tác. - NUnit-Gui.exe:là một hình thức cho phép bạn lựa chọn làm việc với các bài test của bạn và cung cấp các thông tin phản hồi đồ họa. 1.1.1. NUnit-console NUnit-console.exe chương trình là một văn bản dựa trên runner và có thể được sử dụng khi bạn muốn chạy tất cả các bài thi của bạn và không cần phải có màu đỏ /màu vàng / xanh chỉ của thành công hay thất bại. Nó rất hữu ích cho tự động

TimHieuNUnit.01

Embed Size (px)

DESCRIPTION

Đảm bảo chất lượng phần mềm

Citation preview

CNG C KIM TH NUNIT

1.1. Gii thiuNUnit l mt tool mi ,c nhiu version khc nhau,trong NUnit version 2.5 mi pht hnh vo thng 2/2008 nn cng cn mi l vi nhiu ngi,c bit phin bn ny h tr cho b .NET frameword ca Microsoft. NUnit kim tra n v vi cc ngn ng lp trnh ca Microsoft. NET. N c vit hon ton bng C # v c hon ton thit k li tn dng li th ca nhiu tnh nng ngn ng NET.Nhm pht trin NUnit hin nay bao gm Charlie Poole, Jamie Cansdale v Gary Feldman, James W. Newkirk, Alexei A. Vorontsov, Michael C. Hai v Philip A. Craig, Doug de la Torre, David White, Ethan Smith, Al Gonzalez, Ron Jeffries, v Rob Jeffries.NUnit c hai cch khc nhau chy chng trnh th nghim:

Console runer:NUnit console.exe l khi chy nhanh nht nhng khng phi l tng tc.

NUnit-Gui.exe:l mt hnh thc cho php bn la chn lm vic vi cc bi test ca bn v cung cp cc thng tin phn hi ha.1.1.1. NUnit-console

NUnit-console.exe chng trnh l mt vn bn da trn runner v c th c s dng khi bn mun chy tt c cc bi thi ca bn v khng cn phi c mu /mu vng / xanh ch ca thnh cng hay tht bi. N rt hu ch cho t ng ha ca bi thi v tch hp vo cc h thng khc. N t ng lu kt qu ca n trong nh dng XML, cho php bn sn xut cc bo co hay x l cc kt qu. Sau y l mt nh chp mn hnh ca chng trnh.

Hnh 1.1. Giao din Console ca cng c Nunit

1.1.2. NUnit-Gui.exeL mt chng trnh ha nunit.exe runner. iu cho cc bi kim tra trong mt thm him-nh ca s trnh duyt v cung cp mt hnh nh ch biu ca thnh cng hay tht bi ca cc bi kim tra. N cho php bn la chn chy mt bi kim tra hoc mt lp no v t ng reload khi bn chnh sa v bin son li m ca bn. Sau y l mt nh chp mn hnh ca NUnit chy test mt on lnh.

Hnh 1.2. Giao din ha ca cng c Nunit

1.2. Lp AssertLp Assert c s dng trong cc kim th khng nh mt iu kin c bit n. V d, sau khi chy mt s logic, khng nh rng kt qu tr v c gi tr nh d kin, th s dng phng thc Assert.Equals.Cc phng thc trong lp Assert:

Phng thc tnh:

NUnit.Framework.Assert.AreEqual NUnit.Framework.Assert.False NUnit.Framework.Assert.AreNotEqual NUnit.Framework.Assert.Contains NUnit.Framework.Assert.True NUnit.Framework.Assert.Fail NUnit.Framework.Assert.Greater NUnit.Framework.Assert.Less NUnit.Framework.Assert.NotNull NUnit.Framework.Assert.Null NUnit.Framework.Assert.ReferenceEquals Phng thc ng

GetHashCode (inherited from Object): Phc v nh mt hash chc nng cho mt loi, thch hp cho s dng trong cc thut ton hashing v d liu cu trc ging nh mt bng hash. GetType (inherited from Object): Ly kiu ca i tng hin hnh. ToString (inherited from Object): Tr v mt kiu chui ca i tng hin hnh. Finalize (inherited from Object): Cho php mt i tng c gng th vi m ngun m v thc hin cc hot ng trc khi i tng phn i li do tp hp cc d liu v ngha hoc khng tng thch. MemberwiseClone (inherited from Object): To ra mt bn sao ca i tng hin hnh. Assert Constructor: Khi to mt instance mi ca lp Assert.1.3. Cc thuc tnh trong NUnit

Ngi ta thng to mt project dng class library dnh cho cc test class. Project ny theo ng tn gi ca n ch c ngha test v khng c vai tr g trong sn phm phn mm cui cng. Thc ra NUnit c th test bt k test class no bn trong mt assembly bt k nn project test c th l Console application, window application, v.v nhng thng thng ngi ta s chn project loi class library. C mt lu l test class ca bn phi c khai bo public, test method cng th. Khi s dng NUnit.Framework, cc bn s phi lm quen vi nhng Attribute nh [TestFixture], [Test], [Setup], [TearDown], [TestFixture]: dng nh u 1 class l test class, nhng class khc khng c Attribute ny s mc nh b ignore khi NUnit test assembly ca bn. [Test]: dng nh du 1 method l test method, ngha ca n tng t nh TestFixture nhng scope cp method. [Setup]: dng nh du mt method s c gi trc khi mt test case c goi. Nu trong mt test class c mi method test, th mi ln mt method test c chy th Nunit s chy method c nh du vi Setup trc tin. [TearDown]: ngc vi Setup, chy sau mi test method. [TestFixtureSetup]: tng t nh Setup nhng cp ca class, khi mt test class c test th methid no c nh du vi attribute ny s c chy trc tin. [TestFixtureTearDown]: ngc vi TestFixtureSetup.Vy apply NUnit Test th cng vic v cng n gin: to mt project class library, thm reference n .dll nunit.framework, thm 1 class mi, khai bo n thnh public, thm using nunit.framework, thm attribute [TestFixture]vo u ca class, vit mt method test v khai bo vi attribute[Test]. C bn nh vy l test, bn c th kt hp nhiu attribute khc cng nh nguyn tc Inheritance ca lp trnh hng i tng c mt project test uyn chuyn. Ngi ta thng s dng[Setup] m mt transaction scope, sau dng[TearDown] roll back transaction khi test cc Dao, nh vy s khng c d liu b thm xa vo database v bo m d liu test s nh nhau trc khi test cc method.CHNG 3: HNG DN S DNG CNG C NUNIT

1.4. Download v ci t cng c

1.4.1. Download cng c

download v s dng cng c, download NUnit framework t trang web http://www.nunit.org/index.php?p=download

Hnh 1.3. Website download cng c1.4.2. Ci t cng c

Sau khi download cng c v ta c file thc thi c tn: NUnit-2.6.0.12051.msi. Chy file ny ta c mn hnh sau v ta chn Next.

Hnh 1.4. Tin trnh ci t chng trnh

Chn vo checkbox I accept the terms in the License Agreement chp nhn cc iu khon khi s dng v tip tc chn Next

Hnh 1.5. Tin trnh ci t chng trnh (tip theo)

Ti y bn c th chn mt trong ba kiu ci t. y, chn Typical

Hnh 1.6. Tin trnh ci t chng trnh (tip theo)

V sau chn Install

Hnh 1.7. Tin trnh ci t chng trnh (tip theo)Qu trnh ci t ang c tin hnh

Hnh 1.8. Tin trnh ci t chng trnh (tip theo)

i qu trnh ny mt thi gian ngn v sau chng ta chn Finish kt thc qu trnh ci t

Hnh 1.9. Kt thc ci t chng trnh

2.1.3 Add vo visual Studio 2010Bc 1: Trong Visual Studio, vo menu Tool, chn External Tools

Nhn nt Add, t title l NUnit, chn command l ng dn n file nunit.exe, chn arguments l /run $(ProjectDir)/$(ProjectFileName), chn Project Dir l $(ProjectDir) nh hnh. Bc 2: To project ca bn, v d ti to 1 Class Library project c tn MyBanking vi 1 lp c tn Account vi code nh sau: 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; }

}

}

Bc 3: to 1 project mi kiu class library, sau add reference n nunit framework v project cn test nh hnh.

Bc 4: To cc Test case. Nguyn tc l thm 1 annotation [TestFixture] cho lp. Mi test case ta phi c annotation [Test]. V d ti c test case sau:using System;

using System.Collections.Generic;

using System.Linq;

using NUnit.Framework;

using System.Text;

using BankAccount;

namespace TestNUnit

{

[TestFixture]

public class ValidateTest {

[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);

}

}

}

Bc 5: Vo menu Tools->Nunit

Ta c kt qu