Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#NUnit报告了一个奇怪的错误:“;“未找到合适的构造函数”;_C#_.net_Testing_Constructor_Core - Fatal编程技术网

C#NUnit报告了一个奇怪的错误:“;“未找到合适的构造函数”;

C#NUnit报告了一个奇怪的错误:“;“未找到合适的构造函数”;,c#,.net,testing,constructor,core,C#,.net,Testing,Constructor,Core,我正在使用VS2019,并使用.net core模板创建了一个NUnit测试项目,然后添加了以下代码: using NUnit.Framework; namespace xxx { class Immutable { public Immutable(string _cur, string _addr) { Currency = _cur; Address = _addr; }

我正在使用VS2019,并使用.net core模板创建了一个NUnit测试项目,然后添加了以下代码:

using NUnit.Framework;

namespace xxx
{
    class Immutable
    {
        public Immutable(string _cur, string _addr)
        {
            Currency = _cur;
            Address = _addr;
        }

        public string Currency { get; }
        public string Address { get; }

        [Test]
        public static void Test() // reports this line has problem?
        {
            var m = new Immutable("usd", "us");
            string s = m.Currency;
            Assert.AreEqual("usd", s);
        }
    }
}
Build ok,但当我运行它时,test explorer报告如下:

Test
Source: xxx.cs line 17
Duration: < 1 ms

Message: 
    OneTimeSetUp: No suitable constructor was found
测试
资料来源:xxx.cs第17行
持续时间:<1毫秒
信息:
OneTimeSetUp:未找到合适的构造函数

我不太明白问题是什么,如何解决它?

如果您的测试类具有参数化构造函数,那么您需要带有参数的TestFixture属性来构造它

试试这个:

[TestFixuture("usd", "us")]
class Immutable
{
    ...
}

强烈建议您为测试分离一个测试类

[TestFixture]
public class ImmutableTest
{
    [Test]
    public void Test()
    {
        var m = new Immutable("usd", "us");
        string s = m.Currency;
        Assert.AreEqual("usd", s);
    }
}

如果您的测试类具有参数化构造函数,则需要带有参数的TestFixture属性来构造它

试试这个:

[TestFixuture("usd", "us")]
class Immutable
{
    ...
}

强烈建议您为测试分离一个测试类

[TestFixture]
public class ImmutableTest
{
    [Test]
    public void Test()
    {
        var m = new Immutable("usd", "us");
        string s = m.Currency;
        Assert.AreEqual("usd", s);
    }
}

NUnit测试方法(通常)是实例方法。NET测试通常是结构化的,这样您就可以将代码放在一个项目中(通常是类库,但也可以是应用程序),然后是一个包含测试装置的单独测试项目,并引用包含代码的项目。您通常不会在要测试的代码中嵌入测试方法。然而,从理论上讲,NUnit确实支持静态测试方法,所以我不确定它为什么要实例化
不可变的
。但是,测试夹具上应该需要一个
[TestFixture]
属性。是否测试单元测试类本身?NUnit测试方法(通常)是实例方法。NET测试通常是结构化的,这样您就可以将代码放在一个项目中(通常是类库,但也可以是应用程序),然后是一个包含测试装置的单独测试项目,并引用包含代码的项目。您通常不会在要测试的代码中嵌入测试方法。然而,从理论上讲,NUnit确实支持静态测试方法,所以我不确定它为什么要实例化
不可变的
。但是,在测试夹具上应该需要一个
[TestFixture]
属性。您是否测试单元测试类本身?