2017-05-27 62 views
0

我有我的全局设置如下(C#与NUnit的2.6.4)[设置]运行每个测试用例

public class GlobalSetup 
{ 
    [SetUp] 
    public void setUp() 
    { 
     // Setup code 
    } 
} 

和我的测试情况如下

[TestFixture] 
public class Products : GlobalSetup 
{ 
    [Test, Description("Test description here")] 
    public void GetProductsByProductID() 
    { 

    } 

    [Test] 
    public void GetHeader() 
    { 

    } 

    [Test] 
    public void GetMyProducts() 
    { 

    } 
} 

虽然设置是运行它每个测试用例都运行一次。我希望安装程序仅对整个测试套件运行一次。你们可以帮我吗?我可以在整个套件中只运行一次设置。

此外,当我已经使用了GlobalSetUp文件作为之下,则设置方法对于每个测试用例运行两次。

注:我使用NUnit的2.6.4

+0

看那[SetupFixture](https://nunit.org/index.php?p=setupFixture&r=2.6.3)文档。 –

+0

@JeroenHeier但是我在SetupFixture中看到这个例子,它在类级别标记,安装标记为方法级别。我可以在方法级别标记[SetupFixture]吗? –

回答

1

当你说你想一次测试套件运行的全局设置,你的意思是的TestFixture?我会认为你在我的回答做,但请记住,组件是测试套件,每个命名空间是一个测试套件等

要为灯具运行一次的全局设置,任何测试运行之前。将GlobalSetUp类中的SetUp属性更改为TestFixtureSetUp属性。 (如果你使用NUnit 3.x中,这将是OneTimeSetUp属性)

如果你的意思是不是测试夹具其他的东西,我可以编辑这个答案给你。

+0

谢谢查理,那就是我一直在寻找的。 –

1

NUnit的SetUp属性使方法执行每个测试方法之前。

你需要的是一个TestFixtureSetUp属性,用于标记的一次性设置方法。

+0

但是我在[SetupFixture](https://nunit.org/index.php?p=setupFixture&r=2.6.3)中看到这个例子,它在课堂级别和[Setup](https://nunit.org/ index.php?p = setup&r = 2.6.3)在方法级别标记。我可以在方法级别标记[SetupFixture]吗? –

+1

@CodeFuller misspoke。 SetUpFixture是一个夹具,即一个类。它包含NUnit 2.x中的SetUp方法或NUnit 3.x中的OneTimeSetUp方法。 – Charlie

+0

对不起,我将SetUpFixture与TestFixtureSetUp混合在一起。相应地更正了我的答案。 – CodeFuller