NUnit 類別組合?
在我的 NUnit testfixtrues 中,我有一些類似的東西
[Test,Category("catA")] public void test1 { // } [Test,Category("catB")] public void test2 { // } [Test,Category("catA")] [Test,Category("catB")] public void test3 { // }現在在 NUnit gui 中,我希望能夠選擇 catA 和 catB 並執行存在 catA和catB 的測試。目前情況並非如此,NUnit 將執行所有 3 個測試。
有沒有辦法將此行為更改為 AND 條件而不是 OR?
我目前正在執行 v2.5.0.9122。
提前致謝。
2019 年 NUnit 3.0 的快速回答。可以使用多個類別。
考慮以下範例:
[TestFixture] public class Tests1 { [Test] [Category("A")] public void TestA() { Console.WriteLine(TestContext.CurrentContext.Test.Name); } [Test] [Category("B")] public void TestB() { Console.WriteLine(TestContext.CurrentContext.Test.Name); } [Test] [Category("C")] public void TestC() { Console.WriteLine(TestContext.CurrentContext.Test.Name); } [Test] [Category("A")] [Category("B")] public void TestAB() { Console.WriteLine(TestContext.CurrentContext.Test.Name); } [Test] [Category("A")] [Category("C")] public void TestAC() { Console.WriteLine(TestContext.CurrentContext.Test.Name); } [Test] [Category("B")] [Category("C")] public void TestBC() { Console.WriteLine(TestContext.CurrentContext.Test.Name); } [Test] [Category("A")] [Category("B")] [Category("C")] public void TestABC() { Console.WriteLine(TestContext.CurrentContext.Test.Name); } }您可以使用以下命令參數執行包含類別
A和B排除類別的測試:C``--where="cat==A && cat==B && cat!=C"或者您可以使用任何類別執行測試,
A並B排除C如下:--where="(cat==A || cat==B) && cat!=C"
根據文件,您只需說 /include:CatA+CatB
<http://www.nunit.org/index.php?p=consoleCommandLine&r=2.5.1>
指定要包含或排除的測試類別
NUnit 提供 CategoryAttribute 用於將測試標記為屬於一個或多個類別。可以使用 /include 和 /exclude 選項在測試執行中包含或排除類別。以下命令僅執行 BaseLine 類別中的測試:
nunit-console myassembly.dll /include:BaseLine 以下命令執行除數據庫類別之外的所有測試:
nunit-console myassembly.dll /exclude:Database 可以在任一選項上指定多個類別,使用逗號分隔它們。
注意:從 NUnit 2.4 開始,/include 和 /exclude 選項可以在命令行上組合使用。當兩者都使用時,所有包含類別的測試都會執行,除了那些排除類別的測試。
從 NUnit 2.4.6 開始,您可以使用具有以下任一選項的類別表達式:
- A|B|C 選擇具有任何類別 A、B 或 C 的測試。
- A,B,C 選擇具有任何類別 A、B 或 C 的測試。
- A+B+C 僅選擇分配了所有三個類別的測試
- A+B|C 選擇帶有 A 和 B 的測試或帶有類別 C 的測試。
- A+BC 選擇同時包含 A 和 B 但不包含 C 的測試。
- -A 選擇沒有分配類別 A 的測試
- A+(B|C) 選擇具有 A 類和 B 或 C 的測試 逗號運算符等價於 | 但優先級更高。評價順序如下:
一元排除運算符 (-) 高優先級聯合運算符 (,) 交集和減法運算符(+ 和二進制 -) 低優先級聯合運算符 (|) 注意:由於運算符字元具有特殊含義,因此應避免創建一個類別在它的名字中使用它們中的任何一個。例如,不能在命令行上使用類別“db-tests”,因為它似乎意味著“執行類別 db,類別測試除外”。同樣的限制適用於對您使用的 shell 具有特殊含義的字元。

