c# - C# NUnit 即使使用 TestFixture 也找不到合适的构造函数
问题描述
我在 C# 中使用 NUnit 来做一些单元测试。我有这个类继承结构:
[TestFixture(null)]
public abstract class BaseTests
{
protected BaseTests(StatusesEnum? status)
{
}
[Test]
public abstract void TestMethod_1();
}
[TestFixture(null)]
public class SalesTests : BaseTests
{
protected SalesTests(StatusesEnum? status) : base(status)
{
}
//When I run this test from this class it throws the "No suitable constructor was found"
[Test]
public override void TestMethod_1()
{
}
}
//When I run the test from this class it works perfectly since it passes value to the constructor
public class CustomerTests : SalesTests
{
public CustomerTests() : base (StatusesEnum.New) { }
}
当我运行它们时,CustomerTests
它们运行得很好,并且它们按预期调用TestMEthos_1
了。SalesTests
但是当我只运行这个SalesTests
类时,我不断得到No suitable constructor found
. 预期的结果应该是status
参数将为空并且测试应该通过,因为我正在测试方法中检查该参数。
我发现很多答案都说只是添加[TestFixture]
属性,但这也无济于事。所以任何关于如何解决这个问题的想法都会很棒。
解决方案
似乎NUnit
需要构造函数是公开的。下一个设置对我有用(更改了SalesTests
ctor 可访问性修饰符并添加TestFixtureAttribute
到CustomerTests
):
[TestFixture(null)]
public class SalesTests : BaseHfsTests
{
public SalesTests(StatusesEnum? status) : base(status)
{
}
[Test]
public override void TestMethod_1()
{
}
}
[TestFixture]
public class CustomerTests : SalesTests
{
public CustomerTests() : base(StatusesEnum.New)
{
}
}
推荐阅读
- erlang - 使用 Erlang 列表理解查找元素
- android - onLayoutChange() 调用次数过多
- python-3.x - File.choose python 中的等价物?
- replace - Netezza,有没有办法用多个字符替换一个字符?
- python - 如何使用 boto 获取 dynamodb 表属性的空值
- menu - 在主菜单中显示前 2 个级别
- c# - appsettings-configuration 中的 Serilog PushProperty 不起作用
- javascript - 模糊内容时
模糊在内容上,但 blur 是在原始标题文本 ASP.NET JavaScript 下
- batch-file - 使用 for 循环变量调用预定义变量
- python - 无法在 Keras 中使用已加载模型与多线程环境中的 Tensorflow