Xác nhận Passed/Failed trong NUnit

0

NUnit cung cấp cho chúng ta khá là nhiều các phương thức để xác định việc Passed/Failed của phương thức kiểm thử bên trong các lớp tĩnh Assert. Chúng ta có thể sử dụng nhiều câu lệnh Assert bên trong phương thức kiểm thử của chúng ta, nhưng nếu có một câu lệnh Assert nào Failed, những câu lệnh dưới đó sẽ không được thực thi nữa. Nói cách khác, chỉ cần một điểm kiểm tra (verify point) nào trong kịch bản kiểm thử (test case) bị failed, toàn bộ kịch bản kiểm thử sẽ failed.

Trong NUnit, chúng ta có 2 cách để gọi một câu lệnh Assert: ClassicModelConstraintModel

ClassicModel

Trong ClassicModel, chúng ta có nhiều phương thức xác định Passed/Failed cho các mục đích khác nhau. Bên trong lớp Assert chính, chúng ta có các phương thức để so sánh (equality, comparision hay condition), nhận dạng (identity hay type) hay xác định trạng thái của phương thức kiểm thử mà không cần kiểm tra.

Bên cạnh lớp Assert chính, NUnit còn cho chúng ta một số lớp Assert phụ, chuyên dùng để kiểm tra các kiểu dữ liệu đặc biệt như: String, Collection, File hay Directory.

Phương thức so sánh

Các câu lệnh xác định Equality dùng để so sánh hai dữ liệu (data) giống nhau hay khác nhau. Chúng ta có hai phương thức cho trường hợp này: AreEqualAreNotEqual. Hai phương thức này hỗ trợ 24 prototypes khác nhau.

Các câu lệnh xác định Comparision dùng để so sánh hai dữ liệu (data) khác nhau theo hướng lớn hơn và nhỏ hơn. Các câu lệnh Equality chi xác định được hai đối tượng là khác nhau, nhưng đôi khi chúng ta còn cần so sánh đối tượng A lớn hơn (Greater)/nhỏ hơn (Less)/lớn hơn hoặc bằng (GreaterOrEqual)/nhỏ hơn hoặc bằng (LessOrEqual) đối tượng B. Tương tự, mỗi phương thức này cũng có 24 dạng prototype khác nhau.

Các câu lệnh xác định Condition dùng để kiểm tra một điều kiện là True/False hoặc một đối tượng là Empty/Null. Chúng ta có 11 phương thức với 3 prototype cho mỗi phương thức, trừ IsEmpty và IsNotEmpty có 6 prototype.

Phương thức nhận dạng

Nhận dạng theo hướng Identify của NUnit có nghĩa chúng ta so sánh hai đối tượng (object) có giống nhau hay không (cũng gần giống như Equality): AreSame hay AreNotSame. Bên cạnh đó, chúng ta còn có thể so sánh một đối tượng có nằm bên trong (contains) một mảng/danh sách các đối tượng cùng kiểu hay không.

Nhận dạng Type là khi chúng ta muốn biết một đối tượng có phải là một thực thể (Instance) của một kiểu/lớp nào hay không: IsInstanceOfType/IsNotInstanceOfType/IsAssignableFrom/IsNotAssignableOfType.

Đánh dấu phương thức kiểm thử không cần kiểm tra

Đôi khi chúng ta cần chuyển trạng thái của phương thức kiểm thử mà không cần kiểm tra bất kỳ một điều kiện nào của SUT/AUT trong qua trình thực thi. Phương thức Pass/Fail được xác định trực tiếp bởi kỹ sư kiểm thử chứ không phải bởi quá trình thực thi và so sánh các giá trị ở thời điểm thực thi (runtime). Vì NUnit có 4 trạng thái cho một phương thức kiểm thử, nên chúng ta cũng có 4 câu lệnh Assert: Pass/Fail/Ignore/Inconclusive.

Các lớp Assert phụ

Lớp StringAssert chủ yếu hỗ trợ chúng ta kiểm tra một chuỗi có bắt đầu (StartsWith), kết thúc (EndsWith), chứa (Contains) hay theo một định dạng RegEx (IsMatch) hay không.

Lớp CollectionAssert giúp chúng ta kiểm tra các đối tượng dữ liệu tập hợp như: Chứa đựng (Contains), tập hợp con (Subset), rỗng (Empty) hay sắp xếp theo thứ tự (Order).

Lớp FileAssert dùng để so sánh trực tiếp 2 tập tin dựa trên Streams hoặc thông tin của File (FileInfos).

Lớp DirectoryAssert dùng so sánh thông tin của 2 thư mục.

ConstraintModel

Thay vì sử dụng ClassicModel với nhiều phương thức riêng lẻ, chi tiết, ConstraintModel chỉ sử dụng một phương thức duy nhất cho việc viết câu lệnh: That; và bên trong đó, chúng ta sử dụng các thông số khác nhau để tùy biến yêu cầu của phương thức kiểm thử.

Sử dụng ClassicModel sẽ giống như chúng ta nói: Kiểm tra bằng nhau hai dữ liệu: A và B.

Sử dụng ConstraintModel sẽ giống như chúng ta nói: Kiểm tra dữ liệu A này bằng B.

Mã nguồn về cách sử dụng các câu lệnh được upload ở đây.
[adToAppearHere]

Share.

About Author

A QA engineer who is interested in software test, willing to learn new technical and share his knowledge to everyone.

Leave A Reply