Ear*_*rlz 1 .net c# enums unit-testing
可能重复:
如何枚举枚举?
所以我有一些像这样的代码:
enum Decision
{
DecisionA,
DecisionB,
...
}
public void DoStuff(Decision d)
{
switch(d)
{
case Decision.DecisionA:
....
...
}
}
Run Code Online (Sandbox Code Playgroud)
基本上DoStuff
,无论做出什么决定,都会做同样的事情,但决定是用来做出更优化的事情(更快或更好).
现在,我想为DoStuff实现单元测试.通过使用类似的数组来测试所有Decisions是否正常工作相当容易.new Decision[]{DecisionA, DecisionB, ...};
但是,如果我添加一个决定,那么我必须返回并手动将其添加到单元测试中.
是否可以只访问由a指定的所有可能选项enum
?例如,像这样:
foreach(var d in Decision.Options)
{
//d will be DecisionA, and then DecisionB, etc etc
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 10
你可以使用Enum.GetValues
,但就我个人而言,我并不是一个忠实的粉丝.你需要强制转换(例如通过指定迭代变量类型),并通过typeof
以下方式提供类型:
foreach (Decision decision in Enum.GetValues(typeof(Decision)))
{
}
Run Code Online (Sandbox Code Playgroud)
我更喜欢我在Unconstrained Melody中提供的选项- 一个在枚举和代表上提供扩展方法的小库:
foreach (var decision in Enums.GetValues<Decision>())
{
}
Run Code Online (Sandbox Code Playgroud)
这是:
IList<T>
)当然它确实意味着使用一个额外的库...它可能不值得你只为一个电话,但如果你用枚举做很多事情,你可能会发现其他功能有用.
归档时间: |
|
查看次数: |
786 次 |
最近记录: |