2016-02-02 87 views
0

早上好,NUnit的測試:未能測試套件正確實例由於設置屬性

由於情況下,我在使用NUnit 3.0.1自動測試套件(硒)工作。測試直接從Visual Studio 2013'Test Explorer運行。

我的問題是這樣的:有一些設置功能,我試圖使自動開始運行測試套件。對於所有的測試套件,這些都只需要進行一次,所以對每個測試類使用[SetUp]屬性並不是我想要的。

然而,當我運行測試,我的設置是還沒有碰到:(調試確認,設立不被做

到目前爲止,我已經嘗試使用:[SetUpFixture]沿[OneTimeSetUp ]或[SetUp](在許多組合中),也嘗試刪除命名空間。我仍然沒有得到我所需要的。

我對nUnit相當新,所以我想要一些關於什麼可能是錯誤的指導,或者一些替代品,以確保腳本設置運行。

+0

你所描述的內容聽起來在概念上是正確的,你可以發佈你的代碼,以便我們可以看到有什麼問題嗎? – Chris

+0

正如克里斯說的,[SetupFixture]與[OneTimeSetup]是正確的。您使用哪個單元測試運行器來運行測試?並非所有測試跑步者都已更新爲支持NUnit 3. –

回答

1

我希望你遵循這種模式:

在下面的MySetupClass中定義了測試套件設置和拆卸方法,這些方法在測試運行的開始和結束時只執行一次。 請參閱SetupFixture文檔here

MySetupClass.cs

namespace NUnit.Tests 
{ 
    using System; 
    using NUnit.Framework; 

    [SetUpFixture] 
    public class MySetUpClass 
    { 
    [OneTimeSetUp] 
    RunBeforeAnyTests() 
    { 
     Console.writeLine("SetupFixture - OneTimeSetup"); 
    } 

    [OneTimeTearDown] 
    RunAfterAnyTests() 
    { 
     Console.writeLine("Suite TearDown - OneTimeTearDown"); 
    } 
    } 
} 

在以下SuccessTests.csSetupTearDown之前和每次測試後執行,因爲這些方法在標有atttribute TestFixture類定義。 OneTimeSetup & OneTimeTearDown屬性定義測試用例中的方法在類中的所有測試方法之前和之後執行一次。

請參考Setup屬性的文檔[here] [2]。

SuccessTests.cs

namespace NUnit.Tests 
{ 
    using System; 
    using NUnit.Framework; 

    [TestFixture] 
    public class SuccessTests 
    { 
    [SetUp] 
    public void Init() 
    { Console.writeLine("Test Setup"); } 

    [TearDown] 
    public void Cleanup() 
    { Console.writeLine("Test Teardown"); } 


    [OneTimeSetup] 
    public void Test1() 
    { Console.writeLine("Test Fixture - OneTimeSetup"); } 

    [OneTimeTearDown] 
    public void Test2() 
    { Console.writeLine("Test Fixture - OneTimeTearDown"); } 

    [Test] 
    public void Test1() 
    { Console.writeLine("Actual Test1"); } 

    [Test] 
    public void Test2() 
    { Console.writeLine("Actual Test2"); } 

    } 
} 

運行上面的測試將會給這個結果。

Suite Setup - OneTimeSetup 
Test Fixture - OneTimeSetup 
Test Setup 
Actual Test1 
Test Teardown 
Test Setup 
Actual Test2 
Test Teardown 
Test Fixture TearDown - OneTimeTearDown 
Suite TearDown - OneTimeTearDown 
+1

此示例適用於nunit v2,而OP則詢問了v3。他應該將SetUp和TearDown更改爲SetUpFixture中的OneTimeSetUp和OneTimeTearDown。 TestFixtureSetUp和TestFixtureTearDown不贊成使用OneTime等價物。 – Charlie

+0

@Charlie,感謝您指點v2。我將用v3相關屬性更新答案 – parishodak