[英]No suitable constructor was found in NUnit Parameterised tests
见下面的测试夹具:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;
/// <summary>
/// Tests relating to Harry Potter
/// </summary>
[TestFixture("Dumbledore")]
public class HarryPotterTests
{
public string Name;
public HarryPotterTests(string personName)
{
Name = personName;
}
[Test]
public void Test()
{
Console.WriteLine(Name);
}
}
我想要实现的是查看参数化测试装置的工作原理。 我之前没有使用它们,所以这是我第一次尝试它。
它对我来说很好看。 带有字符串的构造函数,并在实际测试fixture属性中传入一个字符串。 它汇编。 测试只是将其写入控制台窗口。
然而,测试失败并显示以下消息:
No suitable constructor was found
我错过了一些明显的东西吗?
无论我在哪里设置断点,都没有任何打击,所以它很早就失败了。
我有这个问题。 它是由构造函数抛出错误引起的,而不是构造函数参数的任何问题。 在我的情况下,错误消息具有误导性。
我遇到了这个问题 - 在NUnit下运行Test类并通过Resharper 8运行。
但是,如果我从这个表单中更改了TestFixture声明
[TestFixture("CategoryName")]
这种形式:
[TestFixture(Category="CategoryName")]
然后他们工作......这也通过NUnit改进了一些东西 - 但是当我的特定测试发生时,我有Resharper帮助的connectionString和Entity Framework问题而NUnit没有 - 但实际上我相信NUnit对后一种语法更满意。
您的测试类完全有效,并在运行NUnit 2.6和.NET 4时返回Passed ,它们都使用NUnit GUI和Resharper 7测试运行器。
当TestFixture
构造函数中的参数类型与测试类构造函数的类型不匹配时,会出现错误。 例如,如果我添加该行:
[TestFixture(10)]
我将在NUnit GUI中收到以下错误:
ParameterizedNunit.HarryPotterTests(10).Test:
ParameterizedNunit.HarryPotterTests does not have a suitable constructor
这个特殊问题是JustCode的NUnit Test Runner中的一个错误。 使用Resharper 7的NUnit Runner和NUnit GUI重新运行它,两者都通过了。
检查构造函数是否具有可能失败的逻辑。 事实证明我在构造函数中有一个调用(坏!)应该在TestFixtureSetUp
。 在Resharper中,如果在构造函数中抛出异常,则这是带参数化测试装置的默认错误消息。
相当明显,但如果测试的构造函数不公开,也会发生。
以防万一它可以帮助别人。 就我而言,我使用的是TestFixtureSource,以及一个为不同的TestFixtures构建组合的函数。 事实证明,数组中的元素数与构造函数的参数数量不匹配。 (我忘了-1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.