O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Nunit framework for .NET application

984 visualizações

Publicada em

Create unit test project for .NET with NUnit framework

Publicada em: Software
  • Seja o primeiro a comentar

Nunit framework for .NET application

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

×