【发布时间】:2015-02-03 19:30:38
【问题描述】:
我有多个实现空接口的测试类(ITest,扩展为IEnumerable)。
界面:
public interface ITest : IEnumerable
{
}
带有描述的TestDataSource:
[Description("TestSourceName")]
public class MyTests : ITest
{
public IEnumerator GetEnumerator()
{
yield return "123";
yield return "456";
}
}
TestDataProvider 类将在 NUnit 中用作 TestDataSource,
我正在使用反射来获得正确的TestDataSource 对象:
public class TestDataProvider : IEnumerable
{
public string Name { get; set; }
public IEnumerator GetEnumerator()
{
if (string.IsNullOrEmpty(Name))
yield break;
var testdata = System.Reflection.Assembly.GetExecutingAssembly()
.GetTypes()
.Where(mytype => mytype.GetInterfaces().Contains(typeof(ITest)))
.Where(mytype => ((DescriptionAttribute)mytype.GetCustomAttributes(typeof(DescriptionAttribute), false)[0])
.Description.ToLower() == Name.ToLower());
yield return ((IEnumerable)testdata).GetEnumerator();
}
public IEnumerator GetEnumerator(string name)
{
Name = name;
return GetEnumerator();
}
}
现在我想知道如何将 TestSourceName 传递给 NUnit 的 TestDataSource?
[TestCaseSource(typeof(TestDataProvider)), TestCaseSourceAttribute("TestSourceName")]
public void TestTestDataProvider()
{
// here we will have the TestDataSource object given by TestDataProvider
// using parameter/attribute? "TestSourceName"
}
【问题讨论】: