首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用TestCaseSource时的迭代次数

使用TestCaseSource时的迭代次数
EN

Stack Overflow用户
提问于 2018-06-25 01:52:26
回答 2查看 115关注 0票数 0

在使用TestCaseSource属性时,可以为每个测试用例获得一个迭代编号吗?

例如

代码语言:javascript
复制
public static object[][] MyTestCases =
{ 
    new object[] { 1 , 3},  //iteration 1
    new object[] { 7 , 9},  //iteration 2
    new object[] { 3 , 5},  //iteration 3
}
[Test, TestCaseSource(nameof(MyTestCases))]
public void MyTest(int valA, valB){


    Assert.That(result, Is.EqualTo(valB), $"Some reason"); // <---- include the iteration with the message
}

我希望能够在断言消息中包含迭代号。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-26 01:30:06

不久之后,一所学院在试图解决这个问题时找到了一个解决办法。

它结合了TestCaseData和C# 5.0 CallerLineNumber属性。

代码语言:javascript
复制
public static MyTestCaseData[] MyTestCases =
{ 
    new MyTestCaseData(1 , 3),  //iteration 1
    new MyTestCaseData(7 , 9),  //iteration 2
    new MyTestCaseData(3 , 5),  //iteration 3
}
[Test, TestCaseSource(nameof(MyTestCases))]
public void MyTest(int valA, valB){


    Assert.That(result, Is.EqualTo(valB), $"Some reason"); // <---- include the iteration with the message
}


public class MyTestCaseData : TestCaseData
{
    public MyTestCaseData(int valA, int valB [CallerLineNumber] int lineNumber = -1) 
        : base(valA, valB)
        {
                SetName($"(#{lineNumber}) - My Test Name");
        }
}

只要您提供了可选的参数[CallerLineNumber] int lineNumber = -1,它就会用与迭代的实例化相关的行号进行初始化。

不完全确定这是如何工作的,我希望这是执行测试的NUnit框架中的一些行。

票数 0
EN

Stack Overflow用户

发布于 2018-06-25 11:06:18

可以采取两种办法:

  1. 将迭代次数作为方法的参数。
  2. 对每个参数集使用TestCaseData实例而不是object[]TestCaseData允许您为测试指定一个名称,如果您愿意的话,它可以包括您的插入号。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51015369

复制
相关文章

相似问题

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