SlideShare une entreprise Scribd logo
1  sur  23
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()
{ /* ... */ }
}
}

Contenu connexe

Tendances

Nguyen ly thong ke 1 (ĐH KTQD)
Nguyen ly thong ke 1 (ĐH KTQD)Nguyen ly thong ke 1 (ĐH KTQD)
Nguyen ly thong ke 1 (ĐH KTQD)hung bonglau
 
Bài tiểu luận môn Phương pháp luận nghiên cứu khoa học - Học viện công nghệ b...
Bài tiểu luận môn Phương pháp luận nghiên cứu khoa học - Học viện công nghệ b...Bài tiểu luận môn Phương pháp luận nghiên cứu khoa học - Học viện công nghệ b...
Bài tiểu luận môn Phương pháp luận nghiên cứu khoa học - Học viện công nghệ b...Huyen Pham
 
Bài 1: GIỚI THIỆU VỀ BẢO MẬT - Giáo trình FPT
Bài 1: GIỚI THIỆU VỀ BẢO MẬT - Giáo trình FPTBài 1: GIỚI THIỆU VỀ BẢO MẬT - Giáo trình FPT
Bài 1: GIỚI THIỆU VỀ BẢO MẬT - Giáo trình FPTMasterCode.vn
 
Mẫu đề cương luận văn Thạc sỹ
Mẫu đề cương luận văn Thạc sỹMẫu đề cương luận văn Thạc sỹ
Mẫu đề cương luận văn Thạc sỹGiang Coffee
 
Đảm bảo chất lượng phầm mềm (nguồn PTIT)
Đảm bảo chất lượng phầm mềm (nguồn PTIT)Đảm bảo chất lượng phầm mềm (nguồn PTIT)
Đảm bảo chất lượng phầm mềm (nguồn PTIT)Thuyet Nguyen
 
Đồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềmĐồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềmNguyễn Anh
 
Giáo trình lý thuyết xác suất và thống kê ứng dụng
Giáo trình lý thuyết xác suất và thống kê ứng dụngGiáo trình lý thuyết xác suất và thống kê ứng dụng
Giáo trình lý thuyết xác suất và thống kê ứng dụngMan_Ebook
 
[ĐAMH] Điều khiển thiết bị điện qua máy tính
[ĐAMH] Điều khiển thiết bị điện qua máy tính[ĐAMH] Điều khiển thiết bị điện qua máy tính
[ĐAMH] Điều khiển thiết bị điện qua máy tínhPham Hoang
 
Đề 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óaDịch vụ viết thuê Khóa Luận - ZALO 0932091562
 
Phương pháp tham lam giải bài toán lập lịch công việc
Phương pháp tham lam giải bài toán lập lịch công việcPhương pháp tham lam giải bài toán lập lịch công việc
Phương pháp tham lam giải bài toán lập lịch công việcNguyễn Danh Thanh
 
Hệ thống quản lý mua hàng siêu thị mini
Hệ thống quản lý mua hàng siêu thị miniHệ thống quản lý mua hàng siêu thị mini
Hệ thống quản lý mua hàng siêu thị miniHan Nguyen
 
Bài tập Xác suất thống kê
Bài tập Xác suất thống kêBài tập Xác suất thống kê
Bài tập Xác suất thống kêHọc Huỳnh Bá
 
Đề kiểm tra cuối kì - Học phần kỹ năng mềm 2 - MD001
Đề kiểm tra cuối kì - Học phần kỹ năng mềm 2 - MD001Đề kiểm tra cuối kì - Học phần kỹ năng mềm 2 - MD001
Đề kiểm tra cuối kì - Học phần kỹ năng mềm 2 - MD001Man_Ebook
 

Tendances (20)

Nguyen ly thong ke 1 (ĐH KTQD)
Nguyen ly thong ke 1 (ĐH KTQD)Nguyen ly thong ke 1 (ĐH KTQD)
Nguyen ly thong ke 1 (ĐH KTQD)
 
Bài tiểu luận môn Phương pháp luận nghiên cứu khoa học - Học viện công nghệ b...
Bài tiểu luận môn Phương pháp luận nghiên cứu khoa học - Học viện công nghệ b...Bài tiểu luận môn Phương pháp luận nghiên cứu khoa học - Học viện công nghệ b...
Bài tiểu luận môn Phương pháp luận nghiên cứu khoa học - Học viện công nghệ b...
 
Bài 1: GIỚI THIỆU VỀ BẢO MẬT - Giáo trình FPT
Bài 1: GIỚI THIỆU VỀ BẢO MẬT - Giáo trình FPTBài 1: GIỚI THIỆU VỀ BẢO MẬT - Giáo trình FPT
Bài 1: GIỚI THIỆU VỀ BẢO MẬT - Giáo trình FPT
 
Mẫu đề cương luận văn Thạc sỹ
Mẫu đề cương luận văn Thạc sỹMẫu đề cương luận văn Thạc sỹ
Mẫu đề cương luận văn Thạc sỹ
 
Đảm bảo chất lượng phầm mềm (nguồn PTIT)
Đảm bảo chất lượng phầm mềm (nguồn PTIT)Đảm bảo chất lượng phầm mềm (nguồn PTIT)
Đảm bảo chất lượng phầm mềm (nguồn PTIT)
 
Đồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềmĐồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềm
 
Luận văn: Xác định các ca kiểm thử và dữ liệu kiểm thử, HAY
Luận văn: Xác định các ca kiểm thử và dữ liệu kiểm thử, HAYLuận văn: Xác định các ca kiểm thử và dữ liệu kiểm thử, HAY
Luận văn: Xác định các ca kiểm thử và dữ liệu kiểm thử, HAY
 
Giáo trình lý thuyết xác suất và thống kê ứng dụng
Giáo trình lý thuyết xác suất và thống kê ứng dụngGiáo trình lý thuyết xác suất và thống kê ứng dụng
Giáo trình lý thuyết xác suất và thống kê ứng dụng
 
[ĐAMH] Điều khiển thiết bị điện qua máy tính
[ĐAMH] Điều khiển thiết bị điện qua máy tính[ĐAMH] Điều khiển thiết bị điện qua máy tính
[ĐAMH] Điều khiển thiết bị điện qua máy tính
 
Đề 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
 
Đề tài: Tìm hiểu hệ thống phát hiện xâm nhập IDS-SNORT, 9đ
Đề tài: Tìm hiểu hệ thống phát hiện xâm nhập IDS-SNORT, 9đĐề tài: Tìm hiểu hệ thống phát hiện xâm nhập IDS-SNORT, 9đ
Đề tài: Tìm hiểu hệ thống phát hiện xâm nhập IDS-SNORT, 9đ
 
Cấu trúc nhân cách
Cấu trúc nhân cáchCấu trúc nhân cách
Cấu trúc nhân cách
 
Bai tap thuc hanh
Bai tap thuc hanhBai tap thuc hanh
Bai tap thuc hanh
 
Đề tài: Chương trình quản lý bán hàng theo chuỗi cung cấp, HAY
Đề tài: Chương trình quản lý bán hàng theo chuỗi cung cấp, HAYĐề tài: Chương trình quản lý bán hàng theo chuỗi cung cấp, HAY
Đề tài: Chương trình quản lý bán hàng theo chuỗi cung cấp, HAY
 
Phương pháp tham lam giải bài toán lập lịch công việc
Phương pháp tham lam giải bài toán lập lịch công việcPhương pháp tham lam giải bài toán lập lịch công việc
Phương pháp tham lam giải bài toán lập lịch công việc
 
Luận văn: Nghiên cứu hệ thống trợ lý thông minh ảo, HAY
Luận văn: Nghiên cứu hệ thống trợ lý thông minh ảo, HAYLuận văn: Nghiên cứu hệ thống trợ lý thông minh ảo, HAY
Luận văn: Nghiên cứu hệ thống trợ lý thông minh ảo, HAY
 
Hệ thống quản lý mua hàng siêu thị mini
Hệ thống quản lý mua hàng siêu thị miniHệ thống quản lý mua hàng siêu thị mini
Hệ thống quản lý mua hàng siêu thị mini
 
Đề tài: Lập trình thiết kế hệ thống chuông báo tại trường học, HAY
Đề tài: Lập trình thiết kế hệ thống chuông báo tại trường học, HAYĐề tài: Lập trình thiết kế hệ thống chuông báo tại trường học, HAY
Đề tài: Lập trình thiết kế hệ thống chuông báo tại trường học, HAY
 
Bài tập Xác suất thống kê
Bài tập Xác suất thống kêBài tập Xác suất thống kê
Bài tập Xác suất thống kê
 
Đề kiểm tra cuối kì - Học phần kỹ năng mềm 2 - MD001
Đề kiểm tra cuối kì - Học phần kỹ năng mềm 2 - MD001Đề kiểm tra cuối kì - Học phần kỹ năng mềm 2 - MD001
Đề kiểm tra cuối kì - Học phần kỹ năng mềm 2 - MD001
 

En vedette

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 projectMinh 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 AgileMinh 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 opensourceMinh 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 technologyMinh 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 SERVICEMinh Tri Lam
 
ADO .NET Entity framework
ADO .NET Entity frameworkADO .NET Entity framework
ADO .NET Entity frameworkMinh 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 & ORACLEMinh Tri Lam
 
Unit testing with NUnit
Unit testing with NUnitUnit testing with NUnit
Unit testing with NUnitkleinron
 
NUnit Features Presentation
NUnit Features PresentationNUnit Features Presentation
NUnit Features PresentationShir Brass
 

En vedette (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
 

Similaire à Nunit framework for .NET application

Test Driven development
Test Driven developmentTest Driven development
Test Driven developmentMU VN
 
Bai giangvb.net
Bai giangvb.netBai giangvb.net
Bai giangvb.netvvpcdsptin
 
Bai tap testing junit…..
Bai tap testing junit…..Bai tap testing junit…..
Bai tap testing junit…..Mua Xuong
 
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ệtHồng Sơn Nguyễn
 
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 1PixwaresVitNam
 
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 basicnataliej4
 
Devexpress cho asp.net
Devexpress cho asp.netDevexpress cho asp.net
Devexpress cho asp.netthichxoidau
 
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 2014Phi 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-truongmamnonxuan thanh
 
Microstation v8
Microstation v8Microstation v8
Microstation v8Ttx Love
 

Similaire à 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
 
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
 
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
 
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() { /* ... */ } } }