【发布时间】:2016-02-24 15:52:15
【问题描述】:
我正在使用 dotCover 检查我的代码覆盖率。 在一行中,我使用正则表达式来检查给定字符串是否有效。
if (!Regex.IsMatch(value, @"[a-zA-Z\-]"))
throw new NullReferenceException("value");
我创建了一个单元测试来检查我的代码是否按预期工作。
但 dotCover 无法识别我的代码已被覆盖。当然因为我不 用每个可能的(不匹配的)字符测试它。
什么是解决这个问题的好方法?
【问题讨论】:
-
使用否定字符类
if (Regex.IsMatch(value, @"[^a-zA-Z-]"))。如果字符不在类中(除了 ascii 字母和连字符),则抛出异常。 -
好主意@CasimiretHippolyte!
-
这比描述所有字符串更容易:
if (!Regex.IsMatch(value, @"^[a-zA-Z-]*$"))。但请注意,如果需要,您需要检查字符串是否为空。
标签: regex unit-testing nunit code-coverage dotcover