命名
- 單元測試項目名:[被測項目].Tests
- 類名:[被測類]Tests
- 方法名:[被測方法][測試場景][預期行為]
舉個例子,現在要對Shape.Core.dll中的Line類的Contains方法寫單元測試,測試其在傳入一個當前直線上的點時,能正確返回true,按照規范應該這樣命名:
項目名:Shape.Core.Tests
類名:LineTests
方法名:Contains_PointIsOnLine_ReturnTrue()
當然,注釋也是很重要的,一般可以在注釋中注明測試條件和預期行為。
分組
在單元測試方法中增加分組,可以更好的管理單元測試,也方便自動化測試,只需要在在測試方法上,使用[TestCategory(name)]特性進行標記。標記分組后,可針對組單獨運行或者調試測試用例。
組的命名規則可參考:[模塊][類名][功能]_[額外用途],如:
步驟
一個完整的單元測試用例應該包含如下三個部分
- Arrange:准備當前測試場景的前置條件
- Action:執行被測試方法
- Assert:對被測試方法的執行結果進行斷言判斷(幾乎每種測試框架都提供了Assert庫,當然,也可以根據情況豐富我們自己的Assert庫)
還是Line類的Contains方法,請看按照標准步驟的代碼:
/// <summary>
/// 條件:點point在直線line上
/// 預期:<see cref="Line.Contains"/> 方法判斷點在直線上
/// </summary>
[TestMethod]
public void Contains_PointIsOnLine_ReturnsTrue()
{
//// Arrange
var point = new Point(1, 1);
var line = new Line(new Point(0, 2), new Point(2, 0));
//// Act
var contains = line.Contains(point);
//// Assert
Assert.IsTrue(contains);
}
以上命名規則和步驟是業界廣泛使用的,每一位開發者務必遵循。