我在nUnit 2.6.4.14350中很难让nUnit TestCaseSource属性正常工作。
当通过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
}
}
线索:
- CreateBondTestCases获取器被命中。(在调用
[TestFixtureSetUp]
之前)。 [TestCaseSource(typeof(TestClass), ...)]
不会改变任何东西。public TestClass()
不会改变任何东西。public IEnumerable<TestCaseSource> CreateTestCases
或public IEnumerable CreateTestCases
不会改变任何东西。[TestCaseSource(typeof(TestClass), "asdfasdf")]
导致失败:系统.反射.目标参数计数异常:参数计数不匹配。
我看到了this question,但是仍然不能让它工作。我也试过让它像this answer一样工作,结果是一样的。我想我一定是在做一些很愚蠢的事情,但是我太生气了,看不清它是什么。有人能给我点启发吗?
1条答案
按热度按时间dl5txlt91#
您的问题很可能是由于您的测试运行器不支持
TestCaseSource
属性造成的,尤其是当它被报告为Create
时。NUnit重命名使用TestCaseSource的测试,以将参数名称组合到测试名称中。对于您的测试,它应报告为createTest_id123
(测试名称+参数值)。使用NUnit GUI检查你的程序集,看看从那里运行测试时,测试是否按预期工作。如果是,那么这将确认你的TestRunner是问题所在。使用VS2012+,你可以使用NUnit测试适配器,通过Nuget安装来运行你的测试。其他插件,如Resharper(取决于版本)应该支持该属性,但我不确定什么版本将与VS2010一起工作。