Trong bài viết này, chúng tôi sẽ sử dụng một ví dụ là xây dựng một Stack sử dụng Test-Driven Development (TDD) theo từng bước một.
Nhiệm vụ
Stack là một cấu trúc dữ liệu mà được truy cập theo kiểu tuần tự vào sau ra trước. Các hoạt động bao gồm: Push, Pop, Top và IsEmpty. Push thêm một phần từ vào đỉnh của Stack, Pop lấy một phần tử trên đỉnh của Stack, Top trả lại phần tử trên đỉnh của Stack. IsEmpty trả về true khi Stack rỗng, ngược lại là false.Như vậy, danh sách test gồm:
- Tạo một Stack và xác nhận IsEmpty là true.
- Push một đối tượng đơn vào Stack và xác nhận IsEmpty là false.
- Push một đối tượng đơn, Pop đối tượng đó và xác nhận IsEmpty là true.
- Push một đối tượng đơn, ghi nhớ đối tượng đó; Pop đối tượng, và xác nhận hai đối tượng này là giống nhau.
- Push ba đối tượng, ghi nhớ chúng; Pop từng đối tượng một, và xác nhận chúng được xóa theo đúng thứ tự.
- Pop một Stack không có thành phần nào.
- Push một đối tượng đơn và sau đó gọi Top. Xác nhận IsEmpty là false.
- Push một đối tượng đơn, nhớ nó; sau đó gọi Top. Xác nhận đối tượng trả lại là giống với đối tượng đã được đưa vào.
- Gọi Top trên một Stack rỗng.
Cài đặt
Tiếp theo, chúng ta sẽ cài đặt từng test case trong danh sách ở trên.Test 1: Tạo một Stack và xác nhận IsEmpty là true.
Đầu tiên, chúng ta khai báo
using System; using NUnit.Framework; [TestFixture] public class StackFixture { /*...*/ }
Tiếp theo, chúng ta viết phương thức test cho test case này, tên là Empty.
[Test] public void Empty() { Stack stack = new Stack(); Assert.IsTrue(stack.IsEmpty); }
Với bản test ở trên, chúng ta sẽ thực hiện cài đặt code cho Property là IsEmpty của lớp Stack mà ta đang cài đặt.
using System; public class Stack { private bool m_IsEmpty; public bool IsEmpty { get { return m_IsEmpty; } } }
Như vậy, việc cài đặt cho test case đầu tiên đã hoàn thành. Khi bắt đầu, bạn nên tập trung vào test case mà bạn đang viết và không nghĩ đến các test case khác. Điều đó sẽ giúp bạn kiểm soát được tốt hơn khi mà lượng test case lớn hơn
Không có nhận xét nào:
Đăng nhận xét