代码覆盖率和正则表达式 (dotCover)

Code Coverage and Regular Expressions (dotCover)

我正在使用 dotCover 检查我的代码覆盖率。 在一行中,我使用正则表达式来检查给定字符串是否有效。

if (!Regex.IsMatch(value, @"[a-zA-Z\-]"))
    throw new NullReferenceException("value");

我创建了一个单元测试来检查我的代码是否按预期工作。

但 dotCover 无法识别我的代码。当然因为我不 用每个可能的(不匹配的)字符测试它。

那个问题的好的解决方案是什么?

如果要检查字符串不包含非 ascii 字母或连字符的字符,可以使用以下模式之一:

带否定字符class(搜索一个字符):

if (Regex.IsMatch(value, @"[^a-zA-Z-]"))

没有(描述所有字符串):

if (!Regex.IsMatch(value, @"^[a-zA-Z-]*$"))

如果你也想防止空字符串:

if (Regex.IsMatch(value, @"[^a-zA-Z-]|^$"))

if (!Regex.IsMatch(value, @"^[a-zA-Z-]+$"))