.Net Unit Test Framework

พอดีเพิ่งได้มีโอกาสมาลองศึกษา .Net และต้องศึกษาเฉพาะส่วน unit test โดยเฉพาะ และได้ลอง search ดู ซึ่งในเวป Microsoft ทำไว้ค่อยข้างดีทำตามได้เลย แต่ก็ขอสรุปสั้นๆ ให้เข้าใจดังนี้

1. การจะสร้าง Unit Test ใน .Net จะเป็นลักษณะสร้างเป็นโปรเจ็คต่างหากใน solution เดียวกัน โดยเลือก template เป็น Unit Test Project ซึ่งตัวอย่างของ Microsoft ก็จะสร้างเป็น C# แล้วเลือกไปเมนูที่ Test ตอนสร้างโปรเจ็ค (ซึ่งเข้าใจว่าไม่จำเป็นที่จะต้องแยกเป็นคนละโปรเจ็ค เพียงแต่จะต้องใส่ using Microsoft.VisualStudio.TestTools.UnitTesting; เพื่ออ้างอิงถึง library ที่ต้องใช้ในการทดสอบ แต่ที่แยกเป็นคนละโปรเจ็ค เพื่อแยกส่วนที่จะเป็นตัวโปรแกรมจริงๆ ออกจากส่วนทดสอบ)

2. แล้วเลือก Add Reference... เป็นโปรเจ็คที่ต้องการจะทดสอบ

3. สร้าง class ใหม่ สำหรับเป็น unit test ซึ่งจะต้องใส่ attribute [TestClass] และ [TestMethod] ไว้ที่ class และ method ที่ต้องการให้ run เพื่อทดสอบ

4. ส่วนการ run test ให้ใช้ Test Explorer ในการ run จากเมนู TEST > Windows > Test Explorer

ตัวอย่างของ class ที่ใช้ทดสอบ

// unit test code
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace BankTests
{
    [TestClass]
    public class BankAccountTests
    {
        [TestMethod]
        public void TestMethod1()
        {
        }
    }
}

นอกจากนั้นยังสามารถใส่ attribute อื่นๆ ได้อีก เช่น [ExpectedException(typeof(ArgumentOutOfRangeException))] ดังนี้ 

//unit test method
[TestMethod]
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public void Debit_WhenAmountIsLessThanZero_ShouldThrowArgumentOutOfRange()
{
    // arrange
    double beginningBalance = 11.99;
    double debitAmount = -100.00;
    BankAccount account = new BankAccount("Mr. Bryan Walton", beginningBalance);

    // act
    account.Debit(debitAmount);

    // assert is handled by ExpectedException
}

Reference:
Walkthrough: Creating and Running Unit Tests for Managed Code Using Microsoft.VisualStudio.TestTools.UnitTesting Members in Unit Tests
Using the Assert Classes
Anatomy of a Unit Test

No comments:

Post a Comment