我很难让nUnit TestCaseSource属性在nUnit 2.6.4.14350中正常工作。
当通过VS2010运行单元测试时,它只是说测试被忽略,没有任何关于原因的附加信息。 Create
测试在测试结果查看器中显示为灰色。
在我的情况下,被测试的类是TestCaseSource本身。这就是我所拥有的:
public class TestClass
{
static TestClass()
{
PopulateIds();
}
public IEnumerable<object> CreateTestCases
{
get
{
return _ids.Select(id => new TestCaseData(id).SetName("createTest_" + id));
}
}
private static string[] _ids;
private static void PopulateIds()
{
_ids = new string[] { "id123", // ... }
}
[TestFixtureSetUp]
public void Init()
{
// this completes successfully
}
[Test, TestCaseSource("CreateTestCases")]
public void Create(string Id)
{
// breakpoint here is never hit as test is ignored
}
}
线索:
[TestFixtureSetUp]
之前)。[TestCaseSource(typeof(TestClass), ...)]
不会改变任何内容。 public TestClass()
不会改变任何内容。public IEnumberable<TestCaseSource> CreateTestCases
或public IEnumberable CreateTestCases
不会改变任何内容。[TestCaseSource(typeof(TestClass), "asdfasdf")]
导致失败:System.Reflection.TargetParameterCountException:参数计数不匹配。我看到了this question,但仍无法让它发挥作用。我也尝试让它像this answer一样工作,结果相同。我想我必须在这里做一些非常愚蠢的事情,但我太激怒了,不知道它是什么。请有人赐教我吗?
答案 0 :(得分:1)
您的问题很可能是由于您的测试运营商不支持TestCaseSource
属性,特别是如果它被报告为Create
。 NUnit重命名使用TestCaseSource的测试,将参数名称组合到测试名称中。对于您的测试,应报告为createTest_id123
(测试名称+参数值)。
使用NUnit GUI检查程序集,以查看从那里运行时测试是否按预期工作。如果他们这样做,那么这将确认您的TestRunner是问题。使用VS2012 +,您可以使用通过Nuget安装的NUnit测试适配器来运行测试。像Resharper这样的其他插件(取决于版本)应该支持该属性,但我不确定哪些版本适用于VS2010。