單元測試之NUnit二

2022-02-21 04:49:36 字數 3333 閱讀 5880

nunit 分三篇文章介紹,入門者可閱讀文章,有基礎者直接參考官方文件。初次寫部落格,望大家指點。

導航:單元測試之nunit一

單元測試之nunit二

單元測試之nunit三

本文介紹常用的nunit屬性特性和斷言。

1. test attribute

標記乙個方法為測試方法。

/// /// 簡單標記方法為測試方法

///

[test]

public void add()

/// /// 新增說明內容,等同於descriptionattribute屬性

///

//[test(description = "這是說明內容")]

[test,description("這是說明屬性")]

public void add()

// 標記非同步方法

[test]

public async task addasync()

// 如果測試方法有返回值,要使用expectedresult校驗

[test(expectedresult = 4)]

public int testadd()

// 非同步含返回值的測試方法

[test(expectedresult = 4)]

public async tasktestaddasync()

2. testfixture attribute

標記乙個類為測試類。從2.5版本開始,對於非引數化、非泛型化測試類是可選的。只要類包含test、testcase、testcasesource屬性標記的方法,都會被視為乙個測試類。

testfixture大多數用來構造引數,被標記的類必須有個對應的建構函式。

簡單例子:

/// /// 使用testfixture標記會生成三個測試,是每個測試方法執行三次

///

[testfixture("hello", "hello", "goodbye")]

[testfixture("zip", "zip")]

[testfixture(42, 42, 99)]

public class testfixtureattributetest

public testfixtureattributetest(string eq1, string eq2)

: this(eq1, eq2, null)

public testfixtureattributetest(int eq1, int eq2, int neq)

[test]

public void testequality()

[test]

public void testinequality()

還可以標記型別:

/// /// 標記tlist會以兩種型別來執行。

///

///

[testfixture(typeof(arraylist))]

[testfixture(typeof(list))]

public class ilist_testswhere tlist : ilist, new()

[test]

public void canaddtolist()

}

3. setup and teardown attribute

標記乙個方法在測試前或者測試後執行,以便初始化或者清理一些引數。

public class setupandteardowntest

[test]

public void test()

[teardown]

public void teardown()

}

執行test測試方法,依次輸出:

我在測試前執行

我在測試時執行

我在測試後執行

4. testcase attribute

testcase有兩個作用:

標記為測試方法;

為方法提供測試引數。

public class testcasetest

/// /// testcase 可以包含條件屬性:author、category、description、excludeplatform、expectedresult、explicit、ignore、ignorereason、includeplatform、reason、testname、testof

///

///

///

///

[testcase(12, 3, expectedresult = 4)]

[testcase(12, 2, expectedresult = 6)]

[testcase(12, 4, expectedresult = 3)]

public int dividetest(int n, int d)

}

更多參考官方文件 的pages頁。

1. assert.areequal

[test]

public void areequal_test()

, }};

list> dic2 = new list>

, }

};assert.areequal(dic1, dic2);//successed.泛型也可以比價,會比較內部的值,且只能一一對應。

listlist = new list;

listlist2 = new list;

assert.areequal(list, list2);//failed.

}

2. assert.aresame
[test]

public void aresame_test()

2. assert.true

判斷條件是否為真。

bool result = true;

assert.istrue(result);

以前老版本有assert.isnullorempty("");這樣的斷言,新版本之後就沒有了。那如果要滿足這種判斷怎麼處理呢?

nunit提供了一系列條件組合,配合 assert.that 的使用可以靈活多變。

constraint的使用參考文件。

1. 取代 assert.isnullorempty

assert.that("1", is.null.or.empty);

單元測試之NUnit

綠色 描述執行的測試通過。黃色 執行的某些測試忽略,但沒有失敗。紅色 測試失敗。testfixture 放在類前,標識類為測試類。test 放在測試類的方法前,標識該方法為可測試的方法。1 該方法必須沒有引數。2 該方法為public型別。3 該方法沒有返回值。setup 每個測試方法執行前,執行該...

單元測試之NUnit

綠色 描述執行的測試通過。黃色 執行的某些測試忽略,但沒有失敗。紅色 測試失敗。testfixture 放在類前,標識類為測試類。test 放在測試類的方法前,標識該方法為可測試的方法。1 該方法必須沒有引數。2 該方法為public型別。3 該方法沒有返回值。setup 每個測試方法執行前,執行該...

單元測試 NUnit

本內容摘自 單元測試之道c 版 使用nunit 編寫目的 供日後參考學習,好記心不如爛筆頭。基本語法 1 單元測試 斷言 assert 方法 areequals assert.areequals expected,actual string message 這是使用最多的斷言形式,expected ...