2016-02-02 56 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