0

嗨,我必须在使用 Nunit 进行的所有测试中都使用一个变量

SimpleContainer container = new SimpleContainer();  

所以我尝试将此定义放在安装程序类中:

[SetUpFixture]
public static class TestSetup
{
    public static SimpleContainer container = new SimpleContainer();    
}

我使用静态类来编写:

IMyClass myClassExpected = (IMyClass)TestSetup.container.GetInstance(typeof(IMyClass), null);

但运行测试后我得到这个错误:“TestSetup is an abstract class”

我根本不明白问题出在哪里

4

3 回答 3

2

我建议您不要为拥有静态实例而烦恼,而是使用继承。

因此,创建一个基类,其中包含您的对象:

public class BaseTestFixture
{
    public SimpleContainer Container { get { return new SimpleContainer(); } }
}   

让您的所有测试都继承自:

public class GoogleTests : BaseTestFixture
{
    [Test]
    public void GoToGoogle()
    {
        Container.GetInstance(.....);
    }
}   
于 2013-10-16T08:56:38.757 回答
0

您将您的测试夹具声明为静态的。因此 NUnit 无法创建它的实例并给您错误。只需将其更改为

[SetUpFixture]
public class TestSetup
{
    ...
于 2013-10-16T08:35:42.463 回答
0

我可能会误解这一点,但是您可以声明一个类变量,并且可以在构造函数中进行任何赋值。这是在 TestFixture 类中,而不是在 SetUpFixture 类中。

于 2015-02-13T12:49:55.053 回答