我的代码覆盖率已将我的自定义例外列为0测试覆盖率。我正在使用MsTest,Moq和Fluentassertions。是否有针对自定义异常的适当单元测试?
这是我的异常类
public class ConfigurationNotFoundException : Exception
{
public ConfigurationNotFoundException()
{
}
public ConfigurationNotFoundException(string message) : base(message)
{
}
public ConfigurationNotFoundException(string message, Exception innerException) : base(message, innerException)
{
}
protected ConfigurationNotFoundException(SerializationInfo info, StreamingContext context) : base(info, context)
{
}
}
如果显示为0%覆盖率,那是因为未使用/未测试。
使用您原始的自定义异常类,以及使用它的这个漂亮的类:
public class SomeClass
{
public void SomeMethod()
{
throw new ConfigurationNotFoundException("Hey!");
}
}
如果我有以下单元测试(带有流利的断言):
[TestClass]
public class SomeClassTest
{
[TestMethod]
public void SomeMethodShouldThrow()
{
Action invocation = () => new SomeClass().SomeMethod();
invocation.ShouldThrow<ConfigurationNotFoundException>().WithMessage("Hey!");
}
}
覆盖范围正确显示了所使用的构造函数,如下所示:
因此,如果未涵盖它,那么它将未经测试或未使用。
要验证它是否未使用,可以右键单击方法名称,然后选择“查找用法”。如果显示“不使用”消息,则可以安全地将其删除。
如果已使用但未经测试;测试它(行为,而不是异常类本身)。
在我们之前的示例中,您仅需要以下内容:
public class ConfigurationNotFoundException : Exception
{
public ConfigurationNotFoundException(string message)
: base(message)
{
}
}
其他构造函数不需要从继承Exception
,并且只会使类混乱,因为它们没有任何作用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句