首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NUnit TestCaseSource

NUnit TestCaseSource
EN

Stack Overflow用户
提问于 2012-07-30 21:47:53
回答 3查看 8.4K关注 0票数 22

我尝试使用TestCaseSource属性。一个问题是:当sourceName字符串无效时,测试只会被忽略,而不是失败。如果源方法被重命名,sourceName字符串没有更新,然后您失去了测试提供的覆盖范围,那么这将是非常糟糕的。有没有一种方法可以改变NUnit的行为,以便在sourceName无效时测试失败?

EN

回答 3

Stack Overflow用户

发布于 2013-04-17 06:45:32

这个问题在NUnit 2.6.2中得到了解决。对于接受Type (必须实现IEnumerable)的属性,有了一个新的构造函数;它“推荐优先于其他形式使用,因为它不使用字符串来指定数据源,因此更容易重构”。(来自documentation。)

这确实要求您的测试运行器支持最新的NUnit。

一个非常基本的例子(参见上面的文档链接了解更多详细信息):

代码语言:javascript
复制
public class TestDataProvider : IEnumerable
{
    public IEnumerator GetEnumerator()
    {
        return new List<int>{ 2, 4, 6 }.GetEnumerator();
    }
}

[TestFixture]
public class MyTests
{
    [TestCaseSource(typeof(TestDataProvider))]
    public void TestOne(int number)
    {
        Assert.That(number % 2, Is.EqualTo(0));
    }
}
票数 7
EN

Stack Overflow用户

发布于 2013-04-10 06:21:55

我已经了解了它在NUnit内部是如何工作的。如果特定的源不存在,它们只会抛出异常:

代码语言:javascript
复制
MemberInfo[] members = providerType.GetMember(
 providerName,
 MemberTypes.Field | MemberTypes.Method | MemberTypes.Property,
 BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);

if (members.Length == 0)
 throw new Exception(string.Format(
  "Unable to locate {0}.{1}", providerType.FullName, providerName));

稍后,它们捕获它并将特定的ParameterSet (包装测试用例源代码的类)标记为RunState.NotRunnable,稍后将其作为忽略的测试进行处理。

因此,在不更改NUnit代码的情况下,可能无法改变这种行为。您还可以尝试与NUnit团队联系,或者以与失败测试相同的方式处理忽略的测试:)

票数 3
EN

Stack Overflow用户

发布于 2016-08-26 19:56:02

如何使用C#6中引入的nameof功能

代码语言:javascript
复制
public static class TestCasesData 
{ 
  public static string[] TestStringsData() 
  {
       return new string[] {"TEST1", "TEST2"};
  }
}

[TestFixture]
public class MyTest
{
     [Test]
     [TestCaseSource(typeof(TestCasesData), nameof(TestCasesData.TestStringsData))]
     public void TestCase1(...)
     {
     }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11722888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档