Unit testing 是否仅跳过NUnit中特定测试的设置方法?

Unit testing 是否仅跳过NUnit中特定测试的设置方法?,unit-testing,nunit,Unit Testing,Nunit,我有一个测试,在运行测试之前,我不需要运行SetUp方法(属性为[SetUp])。我需要为其他测试运行SetUp方法 是否有其他属性可供使用,或者是否有一种非基于属性的方法来实现此目的?您应该为该测试创建一个新类,该类仅具有所需的设置(或缺少设置) 或者,您可以将设置代码分解为一个所有其他测试都调用的方法,但我不推荐这种方法。我不相信您可以这样做,这将涉及知道要运行什么测试,而我认为这是不可能的 我建议您将其放在不同的[TestFixture]中您可以在基类中设置主设置: [设置] 公共虚拟空间

我有一个测试,在运行测试之前,我不需要运行
SetUp
方法(属性为
[SetUp]
)。我需要为其他测试运行
SetUp
方法


是否有其他属性可供使用,或者是否有一种非基于属性的方法来实现此目的?

您应该为该测试创建一个新类,该类仅具有所需的设置(或缺少设置)


或者,您可以将设置代码分解为一个所有其他测试都调用的方法,但我不推荐这种方法。

我不相信您可以这样做,这将涉及知道要运行什么测试,而我认为这是不可能的


我建议您将其放在不同的[TestFixture]中

您可以在基类中设置主
设置

[设置]
公共虚拟空间设置()
{
//在这里摆设
}
…然后在类中重写它,在该类中您有不应运行
设置的测试
代码:

[设置]
公共覆盖无效设置()
{
//如果不在此处调用base.SetUp(),则基本安装程序将不会运行
}

您还可以在设置中添加类别并检查类别列表:

public const string SKIP_SETUP=“SkipSetup”;
[设置]
公共作废设置(){
如果(!CheckForSkipSetup()){
//做安装工作
}
}
私有静态bool CheckForSkipSetup(){
ArrayList categories=TestContext.CurrentContext.Test
.属性[“_CATEGORIES”]作为ArrayList;
bool skipSetup=categories!=null&&categories.Contains(跳过设置);
返回skipSetup;
}
[测试]
[类别(跳过设置)]
公共测试(){
//您的测试代码
}

以下是我建议您实现所需的代码

public const string SKIP_SETUP=“SkipSetup”;
现在添加以下方法:

private static bool CheckForSkipSetup()
{               
var categories=TestContext.CurrentContext.Test?.Properties[“Category”];
bool skipSetup=categories!=null&&categories.Contains(“skipSetup”);
返回skipSetup;
}
现在检查以下条件:

[设置]
公共异步任务Dosomething()
{
如果(!CheckForSkipSetup())
{
}
}
在测试用例中使用这些选项,如下所示:

[测试]
[类别(跳过设置)]
公共异步任务Mywork()
{
}

以下是我为实现您的目标而建议的代码:

public const string SKIP_SETUP=“SkipSetup”;
私有静态bool CheckForSkipSetup()
{
字符串类别=string.Empty;
var categoryKeys=TestContext.CurrentContext.Test.Properties.Keys.ToList();
if(categoryKeys!=null&&categoryKeys.Any())
category=TestContext.CurrentContext.Test.Properties.Get(categoryKeys[0].ToString())作为字符串;
bool skipSetup=(!string.IsNullOrEmpty(category)和&category.Equals(SKIP_SETUP))?true:false;
返回skipSetup;
}
[设置]
公共作废设置()
{
//您的设置代码
}
[测试]
不带setuptest()的公共空白
{
//没有设置的代码
}
[测试]
[类别(跳过设置)]
public void code with setuptest()
{
//需要设置的代码
}

如果我想让它在同一个类中,我该怎么做???@DebendraDash“\u CATEGORIES”在NUnit的最新版本中被称为“Category”。这是在依赖库内部时很容易发生的事情。我花了半个小时研究这个。请注意:使用[TestCase]属性时,类别不可查询。(bug)。特别是在nunit中,“您可以在基类中定义一个设置方法,在派生类中定义另一个。nunit将在派生类中调用基类设置方法之前调用基类设置方法。”。我自己还没有测试过,但听起来基本SetUp()仍将被调用。