2017-06-16 72 views
3

nUnit SetupFixture ReferenceNUnit的SetupFixture類進行測試時

我的解決方案是建立這樣,使用SpecFlow小黃瓜不會被調用功能
解決方案
- 測試項目
- 特點
- 步驟
- 頁面項目
- 頁碼

我運行nUnit te使用這樣的命令ST亞軍:

"C:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe" ".\bin\Dev\Solution.dll"

而且我將此代碼添加到上面的項目結構的步驟文件夾中。

using System; 
using NUnit.Framework; 

namespace TestsProject.StepDefinitions 
{ 
    /// <summary> 
    /// This class needs to be in the same namespace as the StepDefinitions 
    /// see: https://www.nunit.org/index.php?p=setupFixture&r=2.4.8 
    /// </summary> 
    [SetUpFixture] 
    public class NUnitSetupFixture 
    { 
     [SetUp] 
     public void RunBeforeAnyTests() 
     { 
      // this is not working 
      throw new Exception("This is never-ever being called."); 
     } 

     [TearDown] 
     public void RunAfterAnyTests() 
     { 
     } 
    } 
} 

我在做什麼錯了?爲什麼在所有測試都以nUnit開始之前不會調用[SetupFixture]

+0

您使用的是哪個版本的NUnit框架? – Chris

回答

3

使用OneTimeSetUpOneTimeTearDown屬性爲SetUpFixture因爲你使用NUnit 3.0,而不是SetUpTearDown的屬性詳細here

using System; 
using NUnit.Framework; 

namespace TestsProject.StepDefinitions 
{ 
    [SetUpFixture] 
    public class NUnitSetupFixture 
    { 
     [OneTimeSetUp] 
     public void RunBeforeAnyTests() 
     { 
      //throw new Exception("This is called."); 
     } 

     [OneTimeTearDown] 
     public void RunAfterAnyTests() 
     { 
     } 
    } 
} 
+0

謝謝!我終於可以通過閱讀你分享的鏈接並找到它來工作:「任何命名空間之外的SetUpFixture爲整個程序集提供了SetUp和TearDown。」 –

+0

將代碼放入'namespace TestsProject'而不是'namespace TestsProject.StepDefinitions'也可以。 –

+0

是的,兩者都有效。調用SetUpFixture來設置它所在的任何名稱空間,並在該名稱空間和下面的每個測試之前和之後運行。這使您可以爲不同的命名空間提供多個燈具。 –