首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定来自哪个TestCaseSource值?

如何确定来自哪个TestCaseSource值?
EN

Stack Overflow用户
提问于 2019-11-04 08:49:14
回答 1查看 25关注 0票数 0

我使用多个TestCaseSource属性。是否有可能确定哪个值来自哪个源?

代码示例:

代码语言:javascript
复制
[TestCaseSource(CountryListA)]
[TestCaseSource(CountryListB)]
public void SomeTest(Country country){
   ...tests on country...
// access the source (either CountryListA or CountryListB)
}

访问源有多种原因,例如,我需要检查该列表中的国家是唯一的,或者如果出了问题,我想记录测试失败的国家。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-04 16:22:29

简短回答:不。事实上,NUnit的设计就是为了让这一切变得不可能。测试基本上不应该知道他们的论点从何而来,也不知道是谁提供的。这在某些高级测试生成场景以及[Theory]测试中都很重要。

解决此问题的一般方法是采取步骤,确保您的测试具有唯一的名称。任何重复,无论是在同一列表中还是在两个列表之间,都不可能准确地确定哪个源是问题所在。

关键问题是,显然是重复测试是否是真正的重复测试。除非每个返回参数的类型以允许您确定确切情况的方式覆盖ToString(),否则您不会知道这一点。例如,如果Country是一个没有ToString覆盖的类,那么测试的每个实例都将命名为SomeTest(<Country>)。OTOH,如果Country是一个enum或者它的ToString()是以一种独特的方式被覆盖的话,这不会是一个问题。

在您的示例中,有一种相对简单的方法可以为测试提供唯一的全名,即使显示名称是相同的。

class.

  • Derive的
  1. 将所有测试放在一个抽象的数据库中,其中一个是
  2. 使用CountryListA,另一个是CountryListB

尽管如此,在我看来,更好的方法是保持当前的结构,并使测试用例更易于识别。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58689853

复制
相关文章

相似问题

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