SlideShare a Scribd company logo
NUNIT FRAMEWORK
(minhtri.itp@gmail.com)
I. GIỚI THIỆU NUNIT FRAMEWORK................................................................................... 2
II. CÀI ĐẶT ................................................................................................................................ 3
A. YÊU CẦU HỆ THỐNG ............................................................................................... 3
B. CÀI ĐẶT & CẤU HÌNH.............................................................................................. 3
C. THỰC THI NUNIT.................................................................................................... 17
D. VIẾT UNIT TEST VỚI NUNIT ................................................................................ 18
E. PROJECT TEST MẪU THAM KHẢO..................................................................... 23
I. GIỚI THIỆU NUNIT FRAMEWORK
 NUnit là ứng dụng unit test mã nguồn mở cho các ứng dụng chạy trên nền tảng MS.NET
. NUnit được tạo ra với cùng mục đích sử dụng như JUnit (unit test cho Java) và là một
trong các thành viên của gia đình XUnit dành cho các ngôn ngữ lập trình khác.
 Vấn đề chúng ta cần quan tâm là unit test được thực hiện ở giai đoạn nào và được thực
hiện bởi ai trong quá trình phát triển phần mềm. Ở đây chỉ tóm gọn giai đoạn tương tác
giữa lập trình viên và kiểm định viên.
 Sau khi bộ phận lấy yêu cầu từ khách hàng, phân tích yêu cầu, thiết kế tổng thể hệ thống
phân tích thiết kế chi tiết cho từng chức năng của phần mềm và chuyển sang cho lập trình
viên tiến hành lập trình.
 Lập trình viên tiến hành code/debug chức năng của mình theo thiết kế chi tiết.
 Sau đó lập trình viên sẽ tiến hành unit test lại chức năng của mình theo các test case cơ
bản được lập dựa trên đặc tả yêu cầu, thiết kế chi tiết và một số case cơ bản quy định
chung của phần mềm (maxlenght, định dạng, font chữ,thông báo...) Chỉ khi nào các test
case của unit test đã pass hết thì mới chuyển giao cho bộ phận kiểm thử tiến hành test tích
hợp và test hệ thống.
 Giai đoạn test unit có thể thực hiện test bằng tay hoặc test tự động bằng code
 Test bằng tay (Test hộp đen): Qua kinh nghiệm làm việc nhận thấy rằng nếu unit
test bằng tay thì nên thực hiện cho các lập trình viên test chéo các chức năng của
người khác và ngược lại người khác test chức năng của mình. Với lý do như sau
lập trình viên viết code trên chức năng của mình lúc nào cũng là đúng nên mới
viết như vậy và họ chỉ nghĩ ra các case bị giới hạn của họ. Nên để chính lập trình
viên test chức năng của mình sẽ dễ bị sót lỗi.
 Test tự động (Test bằng code – Test hộp trắng): Nên để cho lập trình viên làm
chức năng nào thì tự viết code test unit cho chức năng của mình. Không thực hiện
Programmers
Analysts/Designer
Technical engineer
Tester
test chéo với lý do người viết test case phải xem lại code của lập trình viên khác
nên mất rất nhiều thời gian.
 Phần tiếp theo sẽ giới thiệu cách thực hiện unit test tự động bằng code với NUnit
Framework
II. CÀI ĐẶT
A. YÊU CẦU HỆ THỐNG
 Visual Studio bất kỳ phiên bản nào
 Net Framework 2.0 +
B. CÀI ĐẶT & CẤU HÌNH
 NUnit có thể được cài đặt bằng 2 cách sau:
1. Cài đặt bằng cách download source từ website:
http://www.nunit.org/index.php?p=download
2. Cài đặt thông qua NuGet Package Manager.
 Tài liệu này sẽ giới thiệu các cài đặt Nunit thông qua NuGet.
 Trước hết chúng ta cần cài đặt NuGet.
 Trước khi cài đặt đặt chúng ta nên kiểm tra là lại là đã cài đặt NuGet vào Visual
Studio hay chưa. Thực hiện kiểm tra bằng cách chọn menu tool của VS và tìm đến
“Library Package Manager” -> “Package Manager Console” . Nếu thông tin hiển
thị như hình bên dưới thì NuGet đã được cài đặt vào VS rồi và chúng ta không
cần phải cài lại. Ngược lại chúng cần thực hiện cài đặt NuGet.
(Hình minh họa kiểm tra NuGet đã được cài đặt)
 Để cài đặt chúng ta vào Menu Tool->Click chọn Extension Manager. Khi đó của
sổ Extension Manager được mở ra chúng ta chọn tab Online Gallery. Tiếp theo
chúng ta gõ NuGet vào ô tìm kiếm phía trên bên phải của cửa sổ để tìm kiếm. Khi
đó giao diện tìm kiếm sẽ hiển thị “NuGet Package Manager” chúng ta click chọn
download để tiến hành cài đặt.
(Hình minh họa tìm kiếm NuGet package online)
 Sau khi download thành công chúng ta click Install để cài đặt.
(Hình minh họa cài đặt NuGet Package Manager sau khi download thành công)
 Sau khi cài đặt thành công chúng ta click close để đóng cửa sổ cài đặt lại
(Hình minh họa cài đặt NuGet Package Manager thành công)
 Sau khi cài đặt tại của sổ Extension Manager chúng ta chọn Restart Now để
restart lại VS.
 Phần tiếp theo sẽ hướng dẫn cài đặt Unit test project với ASP.Net MVC bằng 2
cách sau:
1. Tạo NUnit test project ngay khi tạo project chính
 Để thực hiện chúng ta cần phải cài đặt template nunit test cho mvc.
 Vào menu tool chọn Extension Manager. Sau khi cuar soor
Extension Manager hiển thị chúng ta click chọn tab Online
Gallery. Tiếp theo nhập vào ô tìm kiếm phía trên bên phải nội
dung “ASP.NET MVC NUnit” và nhấn Enter để tìm kiếm. Sau đó
tại mục “ASP.NET MVC NUnit” click download để tiến hành cài
đặt NUnit template.
(Hình minh họa tìm kiếm ASP.NET MVC NUnit template)
 Sau khi download thành công click Install để cài đặt)
(Hình minh họa download thành công ASP.NET MVC NUnit)
 Lưu ý sau khi cài đặt thành công phải restart lại VS thì template
mới được load lên khi tạo mới project.
 Bước tiếp theo sẽ hướng dẫn tạo ASP.NET MVC 3 với NUnit
project.
 Vào menu file chọn new -> chọn project. Khi cửa sổ new project
mở ra chúng ta chọn các thông tin theo hình hướng dẫn bên
dưới.Tiếp theo chúng ta nhấn OK để tạo project.
 Tiếp theo chúng ta sẽ check chọn “Create Unit test project”. Tiếp
theo tại combobox Test framework chúng ta chọn Nunit theo hình
hướng dẫn sau:
(Hình minh họa tạo unit test với NUnit framework)
 Tiếp theo click OK để tạo mới. Sau khi tạo mới thành công NUnit
test project sẽ có cấu trúc như sau:
(Hình minh họa cấu trúc NUnit test project)
2. Tạo NUnit test project sau khi tạo project chính
 Sau đây là phần hướng dẫn tạo NUnit Test sau khi tạo project.
 Tại của sổ Solution Explorer. Click chuột phải vào solution->
Chọn Add-> Chọn New Project.
(Hình minh họa add NUnit test project sau khi đã tạo project chính cần test)
 Khi cửa sổ new project mở ra chúng ta chọn loại project là Class
Library. Tiếp theo click OK để tạo mới project theo hình hướng
dẫn sau:
(Hình minh họa chọn loại project cho NUnit project )
 Sau khi tạo mới thành công chúng ta reference project chính vào
NUnit test project. Bằng cách click chuột phải vào References
chọn Add Reference. Khi cửa sổ Add Reference mở lên chọn tab
Project. Sau đó chọn project cần test unit vào và click Add để thực
hiện theo hình hướng dẫn sau.
(Hình minh họa add Reference project chính vào NUnit test project)
 Các bước tiếp theo sẽ hướng dẫn install NUnit test vào project đã
chọn ở trên.
 Tiếp theo chúng ta sẽ mở của sổ Package Manager Console để tiến
hành cài đặt NUnit. Tiếp theo chọn menu tool->Library Package
Manager -> Package Manager Console. Thực hiện theo hình minh
họa sau
(Hình minh họa chọn Package Manager Console để cài đạt NUnit)
 Sau khi cửa sổ Package Manager Console được mở chúng ta chọn
project cần cài đạt Nunit gõ lệnh PM> Install-Package NUnit để
tiến hành cài đặt NUnit
(Hình minh họa cài đặt NUnit)
(Hình minh họa cài đặt NUnit thành công)
 Sau khi cài đặt thành công NUnit project sẽ có cấu trúc như sau:
(Hình minh họa cấu trúc NUnit test project sau khi cài đặt)
 Để thực thi NUnit từ VS chúng ta cần instal NUnit.Runners thực thi cài đặt
NUnit.Runners tương tự như NUnit bằng cách gõ lệnh “Install-Package
NUnit.Runners” vào cửa sổ Package Manager Console
 Sau khi cài đặt NUnit.Runners chúng ta vào menu Tool trên VS chọn External
tools tạo tool thực thi cho NUnit như hướng dẫn sau:
(Hình minh họa tạo NUnit runner tool)
C. THỰC THI NUNIT
 Sau khi đã cài đặt và cấu hình External tool cho NUnit chúng ta tiến hành thực thi
bằng cách chọn vào project cần thực thi unit test. Tiếp theo vào menu tool click
NUnit.Khi đó VS sẽ gọi NUnit thực thi test.
(Hình minh họa run Unit test với NUnit)
D. VIẾT UNIT TEST VỚI NUNIT
 Để viết được unit test với NUnit chúng ta cần phải nắm được các khái niệm cơ
bản của NUNIT (Tham khảo thêm tài liệu tại http://www.nunit.org)
1. Assertions
 Assertions là thành phần trọng tâm của unit test trong bất kỳ
XUnit test framework nào.
 NUnit cung cấp một tập hợp nhiều phương thức tĩnh của lớp Assert
 Nếu một Assert bị fail phương thức gọi không trả về giá trị và lỗi
được thông báo. Nếu một unit test case có nhiều Assert thì khi có
một Assert lỗi thì xem như test case đó bị fail và sẽ không được
thực thi. Vì lý do này nên dùng một Assert cho mỗi test case
 Sau đây là một số loại Asserts
 Equality Asserts (Kiểm tra bằng giữa giá trị mong đợi và
thực tế)
 Identity Asserts (Kiểm tra giống nhau)
 Comparison Asserts (So sánh)
Assert.AreEqual( int expected, int actual );
Assert.AreEqual( int expected, int actual, string message );
Assert.AreEqual( int expected, int actual, string message,
params object[] parms );
Assert.AreEqual( uint expected, uint actual );
Assert.AreEqual( uint expected, uint actual, string message );
Assert.AreEqual( uint expected, uint actual, string message,
params object[] parms );
Assert.AreNotEqual( int expected, int actual );
Assert.AreNotEqual( int expected, int actual, string message );
Assert.AreNotEqual( int expected, int actual, string message,
params object[] parms );
Assert.AreSame( object expected, object actual );
Assert.AreSame( object expected, object actual, string message );
Assert.AreSame( object expected, object actual, string message,
params object[] parms );
Assert.AreNotSame( object expected, object actual );
Assert.AreNotSame( object expected, object actual, string message );
Assert.AreNotSame( object expected, object actual, string message,
params object[] parms );
Assert.Contains( object anObject, IList collection );
Assert.Contains( object anObject, IList collection,
string message );
Assert.Contains( object anObject, IList collection,
string message, params object[] parms );
 Type Asserts (Kiểm tra loại)
 Condition tests (Kiểm tra điều kiện khác)
Assert.Greater( int arg1, int arg2 );
Assert.Greater( int arg1, int arg2, string message );
Assert.Greater( int arg1, int arg2, string message,
object[] parms );
Assert.Less( int arg1, int arg2 );
Assert.Less( int arg1, int arg2, string message );
Assert.Less( int arg1, int arg2, string message,
object[] parms );
Assert.Less( uint arg1, uint arg2 );
Assert.Less( uint arg1, uint arg2, string message );
Assert.Less( uint arg1, uint arg2, string message,
object[] parms );
Assert.Less( decimal arg1, decimal arg2 );
Assert.Less( decimal arg1, decimal arg2, string message );
Assert.Less( decimal arg1, decimal arg2, string message,
object[] parms );
Assert.Less( double arg1, double arg2 );
Assert.Less( double arg1, double arg2, string message );
Assert.Less( double arg1, double arg2, string message,
object[] parms );
Assert.Less( float arg1, float arg2 );
Assert.Less( float arg1, float arg2, string message );
Assert.Less( float arg1, float arg2, string message,
object[] parms );
Assert.Less( IComparable arg1, IComparable arg2 );
Assert.Less( IComparable arg1, IComparable arg2, string message );
Assert.Less( IComparable arg1, IComparable arg2, string message,
object[] parms );
Assert.IsInstanceOfType( Type expected, object actual );
Assert.IsInstanceOfType( Type expected, object actual,
string message );
Assert.IsInstanceOfType( Type expected, object actual,
string message, params object[] parms );
Assert.IsNotInstanceOfType( Type expected, object actual );
Assert.IsNotInstanceOfType( Type expected, object actual,
string message );
Assert.IsNotInstanceOfType( Type expected, object actual,
string message, params object[] parms );
Assert.IsAssignableFrom( Type expected, object actual );
Assert.IsAssignableFrom( Type expected, object actual,
string message );
Assert.IsAssignableFrom( Type expected, object actual,
string message, params object[] parms );
Assert.IsNotAssignableFrom( Type expected, object actual );
Assert.IsNotAssignableFrom( Type expected, object actual,
string message );
Assert.IsNotAssignableFrom( Type expected, object actual,
string message, params object[] parms );
 Utility methods (Các phương thức thường dùng khác)
2. Attributes (Các thuộc tính)
 Dùng để khai báo với Nunit các action cần thực hiện
 TestFixtureAttribute (Khai báo lớp chứa unit test)
 TestAttribute (Khai báo phương thức cần test)
Assert.IsTrue( bool condition );
Assert.IsTrue( bool condition, string message );
Assert.IsTrue( bool condition, string message, object[] parms );
Assert.IsFalse( bool condition);
Assert.IsFalse( bool condition, string message );
Assert.IsFalse( bool condition, string message, object[] parms );
Assert.IsNull( object anObject );
Assert.IsNull( object anObject, string message );
Assert.IsNull( object anObject, string message, object[] parms );
Assert.IsNotNull( object anObject );
Assert.IsNotNull( object anObject, string message );
Assert.IsNotNull( object anObject, string message, object[] parms );
Assert.IsNaN( double aDouble );
Assert.IsNaN( double aDouble, string message );
Assert.IsNaN( double aDouble, string message, object[] parms );
Assert.IsEmpty( string aString );
Assert.IsEmpty( string aString, string message );
Assert.IsEmpty( string aString, string message,
params object[] args );
Assert.IsNotEmpty( string aString );
Assert.IsNotEmpty( string aString, string message );
Assert.IsNotEmpty( string aString, string message,
params object[] args );
Assert.IsEmpty( ICollection collection );
Assert.IsEmpty( ICollection collection, string message );
Assert.IsEmpty( ICollection collection, string message,
params object[] args );
Assert.IsNotEmpty( ICollection collection );
Assert.IsNotEmpty( ICollection collection, string message );
Assert.IsNotEmpty( ICollection collection, string message,
params object[] args );
Assert.Fail();
Assert.Fail( string message );
Assert.Fail( string message, object[] parms );
Assert.Ignore();
Assert.Ignore( string message );
Assert.Ignore( string message, object[] parms );
namespace NUnit.Tests
{
using System;
using NUnit.Framework;
[TestFixture]
public class SuccessTests
{
// ...
}
}
 SetUpAttribute (Nơi khai báo các hàm dùng chung sẽ được
thực thi trước các phương thức test
 TearDownAttribute (Nơi khai báo tập hợp các hàm dùng
chung sau khi thực hiện mỗi phương thức test)
namespace NUnit.Tests
{
using System;
using NUnit.Framework;
[TestFixture]
public class SuccessTests
{
[Test] public void Add()
{ /* ... */ }
public void TestSubtract()
{ /* backwards compatibility */ }
}
}
namespace NUnit.Tests
{
using System;
using NUnit.Framework;
[TestFixture]
public class SuccessTests
{
[SetUp] public void Init()
{ /* ... */ }
[TearDown] public void Dispose()
{ /* ... */ }
[Test] public void Add()
{ /* ... */ }
}
}
 Và một số thuộc tính khác (tham khảo tại
http://www.nunit.org)
E. PROJECT TEST MẪU THAM KHẢO
namespace NUnit.Tests
{
using System;
using NUnit.Framework;
[TestFixture]
public class SuccessTests
{
[SetUp] public void Init()
{ /* ... */ }
[TearDown] public void Dispose()
{ /* ... */ }
[Test] public void Add()
{ /* ... */ }
}
}

More Related Content

What's hot

Bài tập lập và quản lý dự án đầu tư - Tài liệu môn học lập và quản lý dự án đ...
Bài tập lập và quản lý dự án đầu tư - Tài liệu môn học lập và quản lý dự án đ...Bài tập lập và quản lý dự án đầu tư - Tài liệu môn học lập và quản lý dự án đ...
Bài tập lập và quản lý dự án đầu tư - Tài liệu môn học lập và quản lý dự án đ...
Share Tài Liệu Đại Học
 
Xây dựng website tìm kiếm phòng trọ trực tuyến
Xây dựng website tìm kiếm phòng trọ trực tuyếnXây dựng website tìm kiếm phòng trọ trực tuyến
Xây dựng website tìm kiếm phòng trọ trực tuyến
trương dũng
 
[Tiểu luận] Công tác phân tích công việc tại Công ty cổ phần Kinh Đô
[Tiểu luận] Công tác phân tích công việc tại Công ty cổ phần Kinh Đô[Tiểu luận] Công tác phân tích công việc tại Công ty cổ phần Kinh Đô
[Tiểu luận] Công tác phân tích công việc tại Công ty cổ phần Kinh ĐôHạt Mít
 
Tải mẫu PowerPoint đẹp miễn phí
Tải mẫu PowerPoint đẹp miễn phíTải mẫu PowerPoint đẹp miễn phí
Tải mẫu PowerPoint đẹp miễn phí
PowerPoint Đẹp
 
Đề tài: Phân tích điều kiện ra đời, đặc trưng và ưu thế của sản xuất hàng hóa
Đề tài: Phân tích điều kiện ra đời, đặc trưng và ưu thế của sản xuất hàng hóaĐề tài: Phân tích điều kiện ra đời, đặc trưng và ưu thế của sản xuất hàng hóa
Đề tài: Phân tích điều kiện ra đời, đặc trưng và ưu thế của sản xuất hàng hóa
Dịch vụ viết thuê Khóa Luận - ZALO 0932091562
 
Bài tập phân tích hoạt động kinh doanh
Bài tập phân tích hoạt động kinh doanhBài tập phân tích hoạt động kinh doanh
Bài tập phân tích hoạt động kinh doanh
https://www.facebook.com/garmentspace
 
Tam ly hoc dai cuong
Tam ly hoc dai cuongTam ly hoc dai cuong
Tam ly hoc dai cuong
foreman
 
Câu hỏi bài tập quản trị tác nghiệp
Câu hỏi bài tập quản trị tác nghiệpCâu hỏi bài tập quản trị tác nghiệp
Câu hỏi bài tập quản trị tác nghiệp
nataliej4
 
Bài mẫu tiểu luận về công ty may, HAY
Bài mẫu tiểu luận về công ty may, HAYBài mẫu tiểu luận về công ty may, HAY
Bài mẫu tiểu luận về công ty may, HAY
Viết Thuê Khóa Luận _ ZALO 0917.193.864 default
 
BÀI GIẢNG BÀI 1: ĐẠO ĐỨC TRONG HOẠT ĐỘNG KINH DOANH TS. BÙI QUANG XUÂN
BÀI GIẢNG BÀI 1: ĐẠO ĐỨC TRONG HOẠT ĐỘNG KINH DOANH    TS. BÙI QUANG XUÂNBÀI GIẢNG BÀI 1: ĐẠO ĐỨC TRONG HOẠT ĐỘNG KINH DOANH    TS. BÙI QUANG XUÂN
BÀI GIẢNG BÀI 1: ĐẠO ĐỨC TRONG HOẠT ĐỘNG KINH DOANH TS. BÙI QUANG XUÂN
Minh Chanh
 
Đồ án lập kế hoạch kinh doanh shop thời trang, cửa hàng quần áo
Đồ án lập kế hoạch kinh doanh shop thời trang, cửa hàng quần áoĐồ án lập kế hoạch kinh doanh shop thời trang, cửa hàng quần áo
Đồ án lập kế hoạch kinh doanh shop thời trang, cửa hàng quần áo
minhphuongcorp
 
QUẢN TRỊ NGUỒN NHÂN LỰC Chương 2: PHÂN TÍCH THIẾT  KẾ CÔNG VIỆC. TS BÙI Q...
QUẢN TRỊ NGUỒN NHÂN LỰC Chương 2: PHÂN TÍCH THIẾT    KẾ CÔNG VIỆC.   TS BÙI Q...QUẢN TRỊ NGUỒN NHÂN LỰC Chương 2: PHÂN TÍCH THIẾT    KẾ CÔNG VIỆC.   TS BÙI Q...
QUẢN TRỊ NGUỒN NHÂN LỰC Chương 2: PHÂN TÍCH THIẾT  KẾ CÔNG VIỆC. TS BÙI Q...
Minh Chanh
 
Nhật ký thực tập hoàn chỉnh 1111
Nhật ký thực tập hoàn chỉnh 1111Nhật ký thực tập hoàn chỉnh 1111
Nhật ký thực tập hoàn chỉnh 1111
Lâm Xung
 
Biên bản họp nhóm
Biên bản họp nhómBiên bản họp nhóm
Biên bản họp nhómLeeEin
 
Giáo trình Quản trị kinh doanh - Tập 1, Nguyễn Ngọc Huyền (chủ biên) và các t...
Giáo trình Quản trị kinh doanh - Tập 1, Nguyễn Ngọc Huyền (chủ biên) và các t...Giáo trình Quản trị kinh doanh - Tập 1, Nguyễn Ngọc Huyền (chủ biên) và các t...
Giáo trình Quản trị kinh doanh - Tập 1, Nguyễn Ngọc Huyền (chủ biên) và các t...
Man_Ebook
 
Tiểu luận đào tạo và phát triển đề tài xác định nhu cầu đào tạo tiếp theo
Tiểu luận đào tạo và phát triển đề tài xác định nhu cầu đào tạo tiếp theoTiểu luận đào tạo và phát triển đề tài xác định nhu cầu đào tạo tiếp theo
Tiểu luận đào tạo và phát triển đề tài xác định nhu cầu đào tạo tiếp theo
Thanh Hoa
 
Phân tích tình hình tài chính của công ty cổ phần tập đoàn hòa phát
Phân tích tình hình tài chính của công ty cổ phần tập đoàn hòa phátPhân tích tình hình tài chính của công ty cổ phần tập đoàn hòa phát
Phân tích tình hình tài chính của công ty cổ phần tập đoàn hòa phát
https://www.facebook.com/garmentspace
 

What's hot (20)

Bài tập lập và quản lý dự án đầu tư - Tài liệu môn học lập và quản lý dự án đ...
Bài tập lập và quản lý dự án đầu tư - Tài liệu môn học lập và quản lý dự án đ...Bài tập lập và quản lý dự án đầu tư - Tài liệu môn học lập và quản lý dự án đ...
Bài tập lập và quản lý dự án đầu tư - Tài liệu môn học lập và quản lý dự án đ...
 
Xây dựng website tìm kiếm phòng trọ trực tuyến
Xây dựng website tìm kiếm phòng trọ trực tuyếnXây dựng website tìm kiếm phòng trọ trực tuyến
Xây dựng website tìm kiếm phòng trọ trực tuyến
 
[Tiểu luận] Công tác phân tích công việc tại Công ty cổ phần Kinh Đô
[Tiểu luận] Công tác phân tích công việc tại Công ty cổ phần Kinh Đô[Tiểu luận] Công tác phân tích công việc tại Công ty cổ phần Kinh Đô
[Tiểu luận] Công tác phân tích công việc tại Công ty cổ phần Kinh Đô
 
Tải mẫu PowerPoint đẹp miễn phí
Tải mẫu PowerPoint đẹp miễn phíTải mẫu PowerPoint đẹp miễn phí
Tải mẫu PowerPoint đẹp miễn phí
 
Văn hóa kinh doanh của Viettel
Văn hóa kinh doanh của ViettelVăn hóa kinh doanh của Viettel
Văn hóa kinh doanh của Viettel
 
Đề tài: Phân tích điều kiện ra đời, đặc trưng và ưu thế của sản xuất hàng hóa
Đề tài: Phân tích điều kiện ra đời, đặc trưng và ưu thế của sản xuất hàng hóaĐề tài: Phân tích điều kiện ra đời, đặc trưng và ưu thế của sản xuất hàng hóa
Đề tài: Phân tích điều kiện ra đời, đặc trưng và ưu thế của sản xuất hàng hóa
 
Bài tập phân tích hoạt động kinh doanh
Bài tập phân tích hoạt động kinh doanhBài tập phân tích hoạt động kinh doanh
Bài tập phân tích hoạt động kinh doanh
 
Tam ly hoc dai cuong
Tam ly hoc dai cuongTam ly hoc dai cuong
Tam ly hoc dai cuong
 
Câu hỏi bài tập quản trị tác nghiệp
Câu hỏi bài tập quản trị tác nghiệpCâu hỏi bài tập quản trị tác nghiệp
Câu hỏi bài tập quản trị tác nghiệp
 
Bài mẫu tiểu luận về công ty may, HAY
Bài mẫu tiểu luận về công ty may, HAYBài mẫu tiểu luận về công ty may, HAY
Bài mẫu tiểu luận về công ty may, HAY
 
Biên bản họp nhóm
Biên bản họp nhómBiên bản họp nhóm
Biên bản họp nhóm
 
BÀI GIẢNG BÀI 1: ĐẠO ĐỨC TRONG HOẠT ĐỘNG KINH DOANH TS. BÙI QUANG XUÂN
BÀI GIẢNG BÀI 1: ĐẠO ĐỨC TRONG HOẠT ĐỘNG KINH DOANH    TS. BÙI QUANG XUÂNBÀI GIẢNG BÀI 1: ĐẠO ĐỨC TRONG HOẠT ĐỘNG KINH DOANH    TS. BÙI QUANG XUÂN
BÀI GIẢNG BÀI 1: ĐẠO ĐỨC TRONG HOẠT ĐỘNG KINH DOANH TS. BÙI QUANG XUÂN
 
Đồ án lập kế hoạch kinh doanh shop thời trang, cửa hàng quần áo
Đồ án lập kế hoạch kinh doanh shop thời trang, cửa hàng quần áoĐồ án lập kế hoạch kinh doanh shop thời trang, cửa hàng quần áo
Đồ án lập kế hoạch kinh doanh shop thời trang, cửa hàng quần áo
 
QUẢN TRỊ NGUỒN NHÂN LỰC Chương 2: PHÂN TÍCH THIẾT  KẾ CÔNG VIỆC. TS BÙI Q...
QUẢN TRỊ NGUỒN NHÂN LỰC Chương 2: PHÂN TÍCH THIẾT    KẾ CÔNG VIỆC.   TS BÙI Q...QUẢN TRỊ NGUỒN NHÂN LỰC Chương 2: PHÂN TÍCH THIẾT    KẾ CÔNG VIỆC.   TS BÙI Q...
QUẢN TRỊ NGUỒN NHÂN LỰC Chương 2: PHÂN TÍCH THIẾT  KẾ CÔNG VIỆC. TS BÙI Q...
 
Nhật ký thực tập hoàn chỉnh 1111
Nhật ký thực tập hoàn chỉnh 1111Nhật ký thực tập hoàn chỉnh 1111
Nhật ký thực tập hoàn chỉnh 1111
 
Biên bản họp nhóm
Biên bản họp nhómBiên bản họp nhóm
Biên bản họp nhóm
 
Giáo trình Quản trị kinh doanh - Tập 1, Nguyễn Ngọc Huyền (chủ biên) và các t...
Giáo trình Quản trị kinh doanh - Tập 1, Nguyễn Ngọc Huyền (chủ biên) và các t...Giáo trình Quản trị kinh doanh - Tập 1, Nguyễn Ngọc Huyền (chủ biên) và các t...
Giáo trình Quản trị kinh doanh - Tập 1, Nguyễn Ngọc Huyền (chủ biên) và các t...
 
Tiểu luận đào tạo và phát triển đề tài xác định nhu cầu đào tạo tiếp theo
Tiểu luận đào tạo và phát triển đề tài xác định nhu cầu đào tạo tiếp theoTiểu luận đào tạo và phát triển đề tài xác định nhu cầu đào tạo tiếp theo
Tiểu luận đào tạo và phát triển đề tài xác định nhu cầu đào tạo tiếp theo
 
Phân tích tình hình tài chính của công ty cổ phần tập đoàn hòa phát
Phân tích tình hình tài chính của công ty cổ phần tập đoàn hòa phátPhân tích tình hình tài chính của công ty cổ phần tập đoàn hòa phát
Phân tích tình hình tài chính của công ty cổ phần tập đoàn hòa phát
 
Uml hà
Uml hàUml hà
Uml hà
 

Viewers also liked

Mixing asp.net mvc & web form into hybrid project
Mixing asp.net mvc & web form into hybrid projectMixing asp.net mvc & web form into hybrid project
Mixing asp.net mvc & web form into hybrid project
Minh Tri Lam
 
KHẢO SÁT NHU CẦU QUẢN LÝ SỬ DỤNG VÀ CHIA SẺ TÀI NGUYÊN SỐ
KHẢO SÁT NHU CẦU QUẢN LÝ SỬ DỤNG VÀ CHIA SẺ TÀI NGUYÊN SỐKHẢO SÁT NHU CẦU QUẢN LÝ SỬ DỤNG VÀ CHIA SẺ TÀI NGUYÊN SỐ
KHẢO SÁT NHU CẦU QUẢN LÝ SỬ DỤNG VÀ CHIA SẺ TÀI NGUYÊN SỐ
Minh Tri Lam
 
Jenkins (Continuous Integration System with Jenkins)
Jenkins (Continuous Integration System with Jenkins)Jenkins (Continuous Integration System with Jenkins)
Jenkins (Continuous Integration System with Jenkins)
Minh Tri Lam
 
MSSQL SERVER 2008 REPLICATION (PEER TO PEER)
MSSQL SERVER 2008 REPLICATION (PEER TO PEER)MSSQL SERVER 2008 REPLICATION (PEER TO PEER)
MSSQL SERVER 2008 REPLICATION (PEER TO PEER)
Minh Tri Lam
 
Vai trò của Jenkins trong mô hình phát triển phần mềm Agile
Vai trò của Jenkins trong mô hình phát triển phần mềm AgileVai trò của Jenkins trong mô hình phát triển phần mềm Agile
Vai trò của Jenkins trong mô hình phát triển phần mềm Agile
Minh Tri Lam
 
Joomla CMS framework (1.6 - Old version)
Joomla CMS framework (1.6 - Old version) Joomla CMS framework (1.6 - Old version)
Joomla CMS framework (1.6 - Old version)
Minh Tri Lam
 
Secure coding guide lines (Web Sercurity)
Secure coding guide lines (Web Sercurity)Secure coding guide lines (Web Sercurity)
Secure coding guide lines (Web Sercurity)
Minh Tri Lam
 
Digital library opensource
Digital library opensourceDigital library opensource
Digital library opensource
Minh Tri Lam
 
Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Minh Tri Lam
 
Digital library standard and technology
Digital library standard and technologyDigital library standard and technology
Digital library standard and technology
Minh Tri Lam
 
Hướng dẫn lập trình với SCSF phần II(smart client software factory)
Hướng dẫn lập trình với SCSF phần II(smart client software factory)Hướng dẫn lập trình với SCSF phần II(smart client software factory)
Hướng dẫn lập trình với SCSF phần II(smart client software factory)
Minh Tri Lam
 
SQL SERVER BUSINESS INTELLIGENCE & WINDOWS SERVICE
SQL SERVER BUSINESS INTELLIGENCE  & WINDOWS SERVICESQL SERVER BUSINESS INTELLIGENCE  & WINDOWS SERVICE
SQL SERVER BUSINESS INTELLIGENCE & WINDOWS SERVICE
Minh Tri Lam
 
ADO .NET Entity framework
ADO .NET Entity frameworkADO .NET Entity framework
ADO .NET Entity framework
Minh Tri Lam
 
SINGLE SIGN ON (SSO) WITH SECURITY ASSERTION MAKUP LANGUAGE (SAML)
SINGLE SIGN ON (SSO)  WITH SECURITY ASSERTION  MAKUP LANGUAGE (SAML)SINGLE SIGN ON (SSO)  WITH SECURITY ASSERTION  MAKUP LANGUAGE (SAML)
SINGLE SIGN ON (SSO) WITH SECURITY ASSERTION MAKUP LANGUAGE (SAML)
Minh Tri Lam
 
DBLINK BETWEEN MS SQL SERVER & ORACLE
DBLINK BETWEEN MS SQL SERVER & ORACLEDBLINK BETWEEN MS SQL SERVER & ORACLE
DBLINK BETWEEN MS SQL SERVER & ORACLE
Minh Tri Lam
 
Unit testing with NUnit
Unit testing with NUnitUnit testing with NUnit
Unit testing with NUnit
kleinron
 
NUnit Features Presentation
NUnit Features PresentationNUnit Features Presentation
NUnit Features Presentation
Shir Brass
 

Viewers also liked (20)

Mixing asp.net mvc & web form into hybrid project
Mixing asp.net mvc & web form into hybrid projectMixing asp.net mvc & web form into hybrid project
Mixing asp.net mvc & web form into hybrid project
 
KHẢO SÁT NHU CẦU QUẢN LÝ SỬ DỤNG VÀ CHIA SẺ TÀI NGUYÊN SỐ
KHẢO SÁT NHU CẦU QUẢN LÝ SỬ DỤNG VÀ CHIA SẺ TÀI NGUYÊN SỐKHẢO SÁT NHU CẦU QUẢN LÝ SỬ DỤNG VÀ CHIA SẺ TÀI NGUYÊN SỐ
KHẢO SÁT NHU CẦU QUẢN LÝ SỬ DỤNG VÀ CHIA SẺ TÀI NGUYÊN SỐ
 
Jenkins (Continuous Integration System with Jenkins)
Jenkins (Continuous Integration System with Jenkins)Jenkins (Continuous Integration System with Jenkins)
Jenkins (Continuous Integration System with Jenkins)
 
MSSQL SERVER 2008 REPLICATION (PEER TO PEER)
MSSQL SERVER 2008 REPLICATION (PEER TO PEER)MSSQL SERVER 2008 REPLICATION (PEER TO PEER)
MSSQL SERVER 2008 REPLICATION (PEER TO PEER)
 
Vai trò của Jenkins trong mô hình phát triển phần mềm Agile
Vai trò của Jenkins trong mô hình phát triển phần mềm AgileVai trò của Jenkins trong mô hình phát triển phần mềm Agile
Vai trò của Jenkins trong mô hình phát triển phần mềm Agile
 
Joomla CMS framework (1.6 - Old version)
Joomla CMS framework (1.6 - Old version) Joomla CMS framework (1.6 - Old version)
Joomla CMS framework (1.6 - Old version)
 
Secure coding guide lines (Web Sercurity)
Secure coding guide lines (Web Sercurity)Secure coding guide lines (Web Sercurity)
Secure coding guide lines (Web Sercurity)
 
Digital library opensource
Digital library opensourceDigital library opensource
Digital library opensource
 
Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)
 
Digital library standard and technology
Digital library standard and technologyDigital library standard and technology
Digital library standard and technology
 
Hướng dẫn lập trình với SCSF phần II(smart client software factory)
Hướng dẫn lập trình với SCSF phần II(smart client software factory)Hướng dẫn lập trình với SCSF phần II(smart client software factory)
Hướng dẫn lập trình với SCSF phần II(smart client software factory)
 
SQL SERVER BUSINESS INTELLIGENCE & WINDOWS SERVICE
SQL SERVER BUSINESS INTELLIGENCE  & WINDOWS SERVICESQL SERVER BUSINESS INTELLIGENCE  & WINDOWS SERVICE
SQL SERVER BUSINESS INTELLIGENCE & WINDOWS SERVICE
 
ADO .NET Entity framework
ADO .NET Entity frameworkADO .NET Entity framework
ADO .NET Entity framework
 
SINGLE SIGN ON (SSO) WITH SECURITY ASSERTION MAKUP LANGUAGE (SAML)
SINGLE SIGN ON (SSO)  WITH SECURITY ASSERTION  MAKUP LANGUAGE (SAML)SINGLE SIGN ON (SSO)  WITH SECURITY ASSERTION  MAKUP LANGUAGE (SAML)
SINGLE SIGN ON (SSO) WITH SECURITY ASSERTION MAKUP LANGUAGE (SAML)
 
DBLINK BETWEEN MS SQL SERVER & ORACLE
DBLINK BETWEEN MS SQL SERVER & ORACLEDBLINK BETWEEN MS SQL SERVER & ORACLE
DBLINK BETWEEN MS SQL SERVER & ORACLE
 
Nunit
NunitNunit
Nunit
 
Unit testing with NUnit
Unit testing with NUnitUnit testing with NUnit
Unit testing with NUnit
 
Nunit
NunitNunit
Nunit
 
N Unit Presentation
N Unit PresentationN Unit Presentation
N Unit Presentation
 
NUnit Features Presentation
NUnit Features PresentationNUnit Features Presentation
NUnit Features Presentation
 

Similar to Nunit framework for .NET application

Test Driven development
Test Driven developmentTest Driven development
Test Driven development
MU VN
 
Bai giangvb.net
Bai giangvb.netBai giangvb.net
Bai giangvb.net
vvpcdsptin
 
Bai tap testing junit…..
Bai tap testing junit…..Bai tap testing junit…..
Bai tap testing junit…..Mua Xuong
 
Giáo trình Revit structure 1
Giáo trình Revit structure 1Giáo trình Revit structure 1
Giáo trình Revit structure 1
PixwaresVitNam
 
07. giáo trình revit structure tiếng việt
07. giáo trình revit structure tiếng việt07. giáo trình revit structure tiếng việt
07. giáo trình revit structure tiếng việt
Hồng Sơn Nguyễn
 
Báo cáo thực tập hàng tuần
Báo cáo thực tập hàng tuầnBáo cáo thực tập hàng tuần
Báo cáo thực tập hàng tuầnlan huynh
 
Giáo trình tổng quan về Vb
Giáo trình tổng quan về VbGiáo trình tổng quan về Vb
Giáo trình tổng quan về VbSun Down
 
Về Visual Basic 20 5
Về Visual Basic 20 5Về Visual Basic 20 5
Về Visual Basic 20 5Phong Lữ
 
Hướng dẫn lập trình với visual basic
Hướng dẫn lập trình với visual basicHướng dẫn lập trình với visual basic
Hướng dẫn lập trình với visual basic
nataliej4
 
Devexpress cho asp.net
Devexpress cho asp.netDevexpress cho asp.net
Devexpress cho asp.net
thichxoidau
 
Chuong vb.net
Chuong vb.netChuong vb.net
Chuong vb.netkienbom
 
Tìm hiểu các kỹ thuật kiểm thử phần mềm ứng dụng trong lập trình Java.
Tìm hiểu các kỹ thuật kiểm thử phần mềm  ứng dụng trong lập trình Java.Tìm hiểu các kỹ thuật kiểm thử phần mềm  ứng dụng trong lập trình Java.
Tìm hiểu các kỹ thuật kiểm thử phần mềm ứng dụng trong lập trình Java.
Nguyễn Anh
 
Thiết kế chuyển động (Inventor)
Thiết kế chuyển động (Inventor)Thiết kế chuyển động (Inventor)
Thiết kế chuyển động (Inventor)Nguyen Van Phuong
 
Giao trinh autodesk inventor 2014
Giao trinh autodesk inventor 2014Giao trinh autodesk inventor 2014
Giao trinh autodesk inventor 2014
Phi Phi
 
Giao trinh autodesk inventor 2014
Giao trinh autodesk inventor 2014Giao trinh autodesk inventor 2014
Giao trinh autodesk inventor 2014
Đức Lưu
 
ứng dụng cntt qltb-truongmamnon
ứng dụng cntt qltb-truongmamnonứng dụng cntt qltb-truongmamnon
ứng dụng cntt qltb-truongmamnon
xuan thanh
 
Microstation v8
Microstation v8Microstation v8
Microstation v8
Ttx Love
 

Similar to Nunit framework for .NET application (20)

Test Driven development
Test Driven developmentTest Driven development
Test Driven development
 
Bai giangvb.net
Bai giangvb.netBai giangvb.net
Bai giangvb.net
 
Bai tap testing junit…..
Bai tap testing junit…..Bai tap testing junit…..
Bai tap testing junit…..
 
Bai giangvb.net
Bai giangvb.netBai giangvb.net
Bai giangvb.net
 
Giáo trình Revit structure 1
Giáo trình Revit structure 1Giáo trình Revit structure 1
Giáo trình Revit structure 1
 
07. giáo trình revit structure tiếng việt
07. giáo trình revit structure tiếng việt07. giáo trình revit structure tiếng việt
07. giáo trình revit structure tiếng việt
 
Báo cáo thực tập hàng tuần
Báo cáo thực tập hàng tuầnBáo cáo thực tập hàng tuần
Báo cáo thực tập hàng tuần
 
Giáo trình tổng quan về Vb
Giáo trình tổng quan về VbGiáo trình tổng quan về Vb
Giáo trình tổng quan về Vb
 
Về Visual Basic 20 5
Về Visual Basic 20 5Về Visual Basic 20 5
Về Visual Basic 20 5
 
Hướng dẫn lập trình với visual basic
Hướng dẫn lập trình với visual basicHướng dẫn lập trình với visual basic
Hướng dẫn lập trình với visual basic
 
Devexpress cho asp.net
Devexpress cho asp.netDevexpress cho asp.net
Devexpress cho asp.net
 
Chuong vb.net
Chuong vb.netChuong vb.net
Chuong vb.net
 
Tìm hiểu các kỹ thuật kiểm thử phần mềm ứng dụng trong lập trình Java.
Tìm hiểu các kỹ thuật kiểm thử phần mềm  ứng dụng trong lập trình Java.Tìm hiểu các kỹ thuật kiểm thử phần mềm  ứng dụng trong lập trình Java.
Tìm hiểu các kỹ thuật kiểm thử phần mềm ứng dụng trong lập trình Java.
 
Bon nuoc win_cc
Bon nuoc win_ccBon nuoc win_cc
Bon nuoc win_cc
 
Thiết kế chuyển động (Inventor)
Thiết kế chuyển động (Inventor)Thiết kế chuyển động (Inventor)
Thiết kế chuyển động (Inventor)
 
Giao trinh autodesk inventor 2014
Giao trinh autodesk inventor 2014Giao trinh autodesk inventor 2014
Giao trinh autodesk inventor 2014
 
Giao trinh autodesk inventor 2014
Giao trinh autodesk inventor 2014Giao trinh autodesk inventor 2014
Giao trinh autodesk inventor 2014
 
ứng dụng cntt qltb-truongmamnon
ứng dụng cntt qltb-truongmamnonứng dụng cntt qltb-truongmamnon
ứng dụng cntt qltb-truongmamnon
 
Unit Test
Unit TestUnit Test
Unit Test
 
Microstation v8
Microstation v8Microstation v8
Microstation v8
 

Nunit framework for .NET application

  • 1. NUNIT FRAMEWORK (minhtri.itp@gmail.com) I. GIỚI THIỆU NUNIT FRAMEWORK................................................................................... 2 II. CÀI ĐẶT ................................................................................................................................ 3 A. YÊU CẦU HỆ THỐNG ............................................................................................... 3 B. CÀI ĐẶT & CẤU HÌNH.............................................................................................. 3 C. THỰC THI NUNIT.................................................................................................... 17 D. VIẾT UNIT TEST VỚI NUNIT ................................................................................ 18 E. PROJECT TEST MẪU THAM KHẢO..................................................................... 23
  • 2. I. GIỚI THIỆU NUNIT FRAMEWORK  NUnit là ứng dụng unit test mã nguồn mở cho các ứng dụng chạy trên nền tảng MS.NET . NUnit được tạo ra với cùng mục đích sử dụng như JUnit (unit test cho Java) và là một trong các thành viên của gia đình XUnit dành cho các ngôn ngữ lập trình khác.  Vấn đề chúng ta cần quan tâm là unit test được thực hiện ở giai đoạn nào và được thực hiện bởi ai trong quá trình phát triển phần mềm. Ở đây chỉ tóm gọn giai đoạn tương tác giữa lập trình viên và kiểm định viên.  Sau khi bộ phận lấy yêu cầu từ khách hàng, phân tích yêu cầu, thiết kế tổng thể hệ thống phân tích thiết kế chi tiết cho từng chức năng của phần mềm và chuyển sang cho lập trình viên tiến hành lập trình.  Lập trình viên tiến hành code/debug chức năng của mình theo thiết kế chi tiết.  Sau đó lập trình viên sẽ tiến hành unit test lại chức năng của mình theo các test case cơ bản được lập dựa trên đặc tả yêu cầu, thiết kế chi tiết và một số case cơ bản quy định chung của phần mềm (maxlenght, định dạng, font chữ,thông báo...) Chỉ khi nào các test case của unit test đã pass hết thì mới chuyển giao cho bộ phận kiểm thử tiến hành test tích hợp và test hệ thống.  Giai đoạn test unit có thể thực hiện test bằng tay hoặc test tự động bằng code  Test bằng tay (Test hộp đen): Qua kinh nghiệm làm việc nhận thấy rằng nếu unit test bằng tay thì nên thực hiện cho các lập trình viên test chéo các chức năng của người khác và ngược lại người khác test chức năng của mình. Với lý do như sau lập trình viên viết code trên chức năng của mình lúc nào cũng là đúng nên mới viết như vậy và họ chỉ nghĩ ra các case bị giới hạn của họ. Nên để chính lập trình viên test chức năng của mình sẽ dễ bị sót lỗi.  Test tự động (Test bằng code – Test hộp trắng): Nên để cho lập trình viên làm chức năng nào thì tự viết code test unit cho chức năng của mình. Không thực hiện Programmers Analysts/Designer Technical engineer Tester
  • 3. test chéo với lý do người viết test case phải xem lại code của lập trình viên khác nên mất rất nhiều thời gian.  Phần tiếp theo sẽ giới thiệu cách thực hiện unit test tự động bằng code với NUnit Framework II. CÀI ĐẶT A. YÊU CẦU HỆ THỐNG  Visual Studio bất kỳ phiên bản nào  Net Framework 2.0 + B. CÀI ĐẶT & CẤU HÌNH  NUnit có thể được cài đặt bằng 2 cách sau: 1. Cài đặt bằng cách download source từ website: http://www.nunit.org/index.php?p=download 2. Cài đặt thông qua NuGet Package Manager.  Tài liệu này sẽ giới thiệu các cài đặt Nunit thông qua NuGet.  Trước hết chúng ta cần cài đặt NuGet.  Trước khi cài đặt đặt chúng ta nên kiểm tra là lại là đã cài đặt NuGet vào Visual Studio hay chưa. Thực hiện kiểm tra bằng cách chọn menu tool của VS và tìm đến “Library Package Manager” -> “Package Manager Console” . Nếu thông tin hiển thị như hình bên dưới thì NuGet đã được cài đặt vào VS rồi và chúng ta không cần phải cài lại. Ngược lại chúng cần thực hiện cài đặt NuGet.
  • 4. (Hình minh họa kiểm tra NuGet đã được cài đặt)  Để cài đặt chúng ta vào Menu Tool->Click chọn Extension Manager. Khi đó của sổ Extension Manager được mở ra chúng ta chọn tab Online Gallery. Tiếp theo chúng ta gõ NuGet vào ô tìm kiếm phía trên bên phải của cửa sổ để tìm kiếm. Khi đó giao diện tìm kiếm sẽ hiển thị “NuGet Package Manager” chúng ta click chọn download để tiến hành cài đặt.
  • 5. (Hình minh họa tìm kiếm NuGet package online)  Sau khi download thành công chúng ta click Install để cài đặt.
  • 6. (Hình minh họa cài đặt NuGet Package Manager sau khi download thành công)  Sau khi cài đặt thành công chúng ta click close để đóng cửa sổ cài đặt lại (Hình minh họa cài đặt NuGet Package Manager thành công)  Sau khi cài đặt tại của sổ Extension Manager chúng ta chọn Restart Now để restart lại VS.
  • 7.  Phần tiếp theo sẽ hướng dẫn cài đặt Unit test project với ASP.Net MVC bằng 2 cách sau: 1. Tạo NUnit test project ngay khi tạo project chính  Để thực hiện chúng ta cần phải cài đặt template nunit test cho mvc.  Vào menu tool chọn Extension Manager. Sau khi cuar soor Extension Manager hiển thị chúng ta click chọn tab Online Gallery. Tiếp theo nhập vào ô tìm kiếm phía trên bên phải nội dung “ASP.NET MVC NUnit” và nhấn Enter để tìm kiếm. Sau đó tại mục “ASP.NET MVC NUnit” click download để tiến hành cài đặt NUnit template. (Hình minh họa tìm kiếm ASP.NET MVC NUnit template)
  • 8.  Sau khi download thành công click Install để cài đặt) (Hình minh họa download thành công ASP.NET MVC NUnit)  Lưu ý sau khi cài đặt thành công phải restart lại VS thì template mới được load lên khi tạo mới project.  Bước tiếp theo sẽ hướng dẫn tạo ASP.NET MVC 3 với NUnit project.  Vào menu file chọn new -> chọn project. Khi cửa sổ new project mở ra chúng ta chọn các thông tin theo hình hướng dẫn bên dưới.Tiếp theo chúng ta nhấn OK để tạo project.
  • 9.  Tiếp theo chúng ta sẽ check chọn “Create Unit test project”. Tiếp theo tại combobox Test framework chúng ta chọn Nunit theo hình hướng dẫn sau:
  • 10. (Hình minh họa tạo unit test với NUnit framework)  Tiếp theo click OK để tạo mới. Sau khi tạo mới thành công NUnit test project sẽ có cấu trúc như sau:
  • 11. (Hình minh họa cấu trúc NUnit test project) 2. Tạo NUnit test project sau khi tạo project chính  Sau đây là phần hướng dẫn tạo NUnit Test sau khi tạo project.  Tại của sổ Solution Explorer. Click chuột phải vào solution-> Chọn Add-> Chọn New Project.
  • 12. (Hình minh họa add NUnit test project sau khi đã tạo project chính cần test)  Khi cửa sổ new project mở ra chúng ta chọn loại project là Class Library. Tiếp theo click OK để tạo mới project theo hình hướng dẫn sau:
  • 13. (Hình minh họa chọn loại project cho NUnit project )  Sau khi tạo mới thành công chúng ta reference project chính vào NUnit test project. Bằng cách click chuột phải vào References chọn Add Reference. Khi cửa sổ Add Reference mở lên chọn tab Project. Sau đó chọn project cần test unit vào và click Add để thực hiện theo hình hướng dẫn sau.
  • 14. (Hình minh họa add Reference project chính vào NUnit test project)  Các bước tiếp theo sẽ hướng dẫn install NUnit test vào project đã chọn ở trên.  Tiếp theo chúng ta sẽ mở của sổ Package Manager Console để tiến hành cài đặt NUnit. Tiếp theo chọn menu tool->Library Package Manager -> Package Manager Console. Thực hiện theo hình minh họa sau
  • 15. (Hình minh họa chọn Package Manager Console để cài đạt NUnit)  Sau khi cửa sổ Package Manager Console được mở chúng ta chọn project cần cài đạt Nunit gõ lệnh PM> Install-Package NUnit để tiến hành cài đặt NUnit (Hình minh họa cài đặt NUnit)
  • 16. (Hình minh họa cài đặt NUnit thành công)  Sau khi cài đặt thành công NUnit project sẽ có cấu trúc như sau: (Hình minh họa cấu trúc NUnit test project sau khi cài đặt)  Để thực thi NUnit từ VS chúng ta cần instal NUnit.Runners thực thi cài đặt NUnit.Runners tương tự như NUnit bằng cách gõ lệnh “Install-Package NUnit.Runners” vào cửa sổ Package Manager Console  Sau khi cài đặt NUnit.Runners chúng ta vào menu Tool trên VS chọn External tools tạo tool thực thi cho NUnit như hướng dẫn sau:
  • 17. (Hình minh họa tạo NUnit runner tool) C. THỰC THI NUNIT  Sau khi đã cài đặt và cấu hình External tool cho NUnit chúng ta tiến hành thực thi bằng cách chọn vào project cần thực thi unit test. Tiếp theo vào menu tool click NUnit.Khi đó VS sẽ gọi NUnit thực thi test.
  • 18. (Hình minh họa run Unit test với NUnit) D. VIẾT UNIT TEST VỚI NUNIT  Để viết được unit test với NUnit chúng ta cần phải nắm được các khái niệm cơ bản của NUNIT (Tham khảo thêm tài liệu tại http://www.nunit.org) 1. Assertions  Assertions là thành phần trọng tâm của unit test trong bất kỳ XUnit test framework nào.  NUnit cung cấp một tập hợp nhiều phương thức tĩnh của lớp Assert  Nếu một Assert bị fail phương thức gọi không trả về giá trị và lỗi được thông báo. Nếu một unit test case có nhiều Assert thì khi có một Assert lỗi thì xem như test case đó bị fail và sẽ không được thực thi. Vì lý do này nên dùng một Assert cho mỗi test case  Sau đây là một số loại Asserts  Equality Asserts (Kiểm tra bằng giữa giá trị mong đợi và thực tế)
  • 19.  Identity Asserts (Kiểm tra giống nhau)  Comparison Asserts (So sánh) Assert.AreEqual( int expected, int actual ); Assert.AreEqual( int expected, int actual, string message ); Assert.AreEqual( int expected, int actual, string message, params object[] parms ); Assert.AreEqual( uint expected, uint actual ); Assert.AreEqual( uint expected, uint actual, string message ); Assert.AreEqual( uint expected, uint actual, string message, params object[] parms ); Assert.AreNotEqual( int expected, int actual ); Assert.AreNotEqual( int expected, int actual, string message ); Assert.AreNotEqual( int expected, int actual, string message, params object[] parms ); Assert.AreSame( object expected, object actual ); Assert.AreSame( object expected, object actual, string message ); Assert.AreSame( object expected, object actual, string message, params object[] parms ); Assert.AreNotSame( object expected, object actual ); Assert.AreNotSame( object expected, object actual, string message ); Assert.AreNotSame( object expected, object actual, string message, params object[] parms ); Assert.Contains( object anObject, IList collection ); Assert.Contains( object anObject, IList collection, string message ); Assert.Contains( object anObject, IList collection, string message, params object[] parms );
  • 20.  Type Asserts (Kiểm tra loại)  Condition tests (Kiểm tra điều kiện khác) Assert.Greater( int arg1, int arg2 ); Assert.Greater( int arg1, int arg2, string message ); Assert.Greater( int arg1, int arg2, string message, object[] parms ); Assert.Less( int arg1, int arg2 ); Assert.Less( int arg1, int arg2, string message ); Assert.Less( int arg1, int arg2, string message, object[] parms ); Assert.Less( uint arg1, uint arg2 ); Assert.Less( uint arg1, uint arg2, string message ); Assert.Less( uint arg1, uint arg2, string message, object[] parms ); Assert.Less( decimal arg1, decimal arg2 ); Assert.Less( decimal arg1, decimal arg2, string message ); Assert.Less( decimal arg1, decimal arg2, string message, object[] parms ); Assert.Less( double arg1, double arg2 ); Assert.Less( double arg1, double arg2, string message ); Assert.Less( double arg1, double arg2, string message, object[] parms ); Assert.Less( float arg1, float arg2 ); Assert.Less( float arg1, float arg2, string message ); Assert.Less( float arg1, float arg2, string message, object[] parms ); Assert.Less( IComparable arg1, IComparable arg2 ); Assert.Less( IComparable arg1, IComparable arg2, string message ); Assert.Less( IComparable arg1, IComparable arg2, string message, object[] parms ); Assert.IsInstanceOfType( Type expected, object actual ); Assert.IsInstanceOfType( Type expected, object actual, string message ); Assert.IsInstanceOfType( Type expected, object actual, string message, params object[] parms ); Assert.IsNotInstanceOfType( Type expected, object actual ); Assert.IsNotInstanceOfType( Type expected, object actual, string message ); Assert.IsNotInstanceOfType( Type expected, object actual, string message, params object[] parms ); Assert.IsAssignableFrom( Type expected, object actual ); Assert.IsAssignableFrom( Type expected, object actual, string message ); Assert.IsAssignableFrom( Type expected, object actual, string message, params object[] parms ); Assert.IsNotAssignableFrom( Type expected, object actual ); Assert.IsNotAssignableFrom( Type expected, object actual, string message ); Assert.IsNotAssignableFrom( Type expected, object actual, string message, params object[] parms );
  • 21.  Utility methods (Các phương thức thường dùng khác) 2. Attributes (Các thuộc tính)  Dùng để khai báo với Nunit các action cần thực hiện  TestFixtureAttribute (Khai báo lớp chứa unit test)  TestAttribute (Khai báo phương thức cần test) Assert.IsTrue( bool condition ); Assert.IsTrue( bool condition, string message ); Assert.IsTrue( bool condition, string message, object[] parms ); Assert.IsFalse( bool condition); Assert.IsFalse( bool condition, string message ); Assert.IsFalse( bool condition, string message, object[] parms ); Assert.IsNull( object anObject ); Assert.IsNull( object anObject, string message ); Assert.IsNull( object anObject, string message, object[] parms ); Assert.IsNotNull( object anObject ); Assert.IsNotNull( object anObject, string message ); Assert.IsNotNull( object anObject, string message, object[] parms ); Assert.IsNaN( double aDouble ); Assert.IsNaN( double aDouble, string message ); Assert.IsNaN( double aDouble, string message, object[] parms ); Assert.IsEmpty( string aString ); Assert.IsEmpty( string aString, string message ); Assert.IsEmpty( string aString, string message, params object[] args ); Assert.IsNotEmpty( string aString ); Assert.IsNotEmpty( string aString, string message ); Assert.IsNotEmpty( string aString, string message, params object[] args ); Assert.IsEmpty( ICollection collection ); Assert.IsEmpty( ICollection collection, string message ); Assert.IsEmpty( ICollection collection, string message, params object[] args ); Assert.IsNotEmpty( ICollection collection ); Assert.IsNotEmpty( ICollection collection, string message ); Assert.IsNotEmpty( ICollection collection, string message, params object[] args ); Assert.Fail(); Assert.Fail( string message ); Assert.Fail( string message, object[] parms ); Assert.Ignore(); Assert.Ignore( string message ); Assert.Ignore( string message, object[] parms ); namespace NUnit.Tests { using System; using NUnit.Framework; [TestFixture] public class SuccessTests { // ... } }
  • 22.  SetUpAttribute (Nơi khai báo các hàm dùng chung sẽ được thực thi trước các phương thức test  TearDownAttribute (Nơi khai báo tập hợp các hàm dùng chung sau khi thực hiện mỗi phương thức test) namespace NUnit.Tests { using System; using NUnit.Framework; [TestFixture] public class SuccessTests { [Test] public void Add() { /* ... */ } public void TestSubtract() { /* backwards compatibility */ } } } namespace NUnit.Tests { using System; using NUnit.Framework; [TestFixture] public class SuccessTests { [SetUp] public void Init() { /* ... */ } [TearDown] public void Dispose() { /* ... */ } [Test] public void Add() { /* ... */ } } }
  • 23.  Và một số thuộc tính khác (tham khảo tại http://www.nunit.org) E. PROJECT TEST MẪU THAM KHẢO namespace NUnit.Tests { using System; using NUnit.Framework; [TestFixture] public class SuccessTests { [SetUp] public void Init() { /* ... */ } [TearDown] public void Dispose() { /* ... */ } [Test] public void Add() { /* ... */ } } }