C#NUnit报告了一个奇怪的错误:“;“未找到合适的构造函数”;
我正在使用VS2019,并使用.net core模板创建了一个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; }
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]
属性。您是否测试单元测试类本身?