UnitTest là gì

UnitTest là code để test lại các method đã viết trong dự án.

Hãy viết unit test sao cho mọi việc của bạn là modify source code implement chứ không phải là nỗ lực chỉnh sửa code test. Nhìn thấy test case fail mới chính là điều  ta mong đợi từ unit test, điều đó có nghĩa là unit test của  ta đã hoạt động và thực sự có ý nghĩa. Ta nên vui mừng vì điều đó, qua unit test fail chúng ta mới nhận thấy rõ ràng có sự sai sót trong code implement và có thể nhanh chóng fix nó tại bước unit test này.

Ví dụ

Cover method SendSignal() của Class GateUtility()

class_gateutility.png

Bước 1: Tạo Project Unittest và tạo Class để test Class GateUtility() và trong project cần add reference đến project cần test

create_project.png

Bước 2: Viết UnitTest theo nguyên tắc Top to Down dựa trên logic của method cần test

if_class_gateutility.png

Dễ nhận thấy kết quả trả về trong hàm dựa trên 2 điều kiện ==>  Trong Test Class Tách thành 2 hàm  để cover 2 case :

2case

[TestMethod]

 public void Test_Hello_SendEmailMethod_GateUtility() sẽ cover điều kiện thứ nhất

[TestMethod]

public void Test_Spam_SendEmailMethod_GateUtility() sẽ cover điều kiện thứ hai

[TestClass] để thông báo đây là lớp Unitest

[TestMethod] để thông báo đây là hàm Unitest

Bước 3: Viết hàm test xử lý

  • Đối vớI trường hợp hàm trả về “This is spam signal”
  • Gán giá trị parmater tương ứng result trả về case này: string subject = “This is test”;
  • Truyền các parmaters vào hàm SendSignal và dùng Assert.AreEqual() để kiểm tra kết quả
  • Làm tương tự với trường hợp còn lại

check_parameter

Cuối cùng: Run các Test case

run_test.png

Source: https://github.com/Trung1234/BaiTapC-/blob/master/SRPRefactor/ServiceStationTest/GateUtilityTest.cs

Kho bài tập C# của tôi

Tham khảo:

https://viblo.asia/p/4-dac-tinh-cua-lap-trinh-huong-doi-tuong-object-oriented-program-XL6lAA7Nlek

https://viblo.asia/p/vai-tro-cua-unit-test-l0rvmm4AvyqA

https://www.codeproject.com/Articles/796014/KickStart-your-Unit-Testing-using-Moq

http://duyanhpham.com/phan-1-cach-viet-unit-test-trong-c-sharp/

https://duyphuong13.wordpress.com/2013/12/15/mot-so-ky-thuat-trong-unit-test/