我有一个看似愚蠢和简单的问题,但我几乎不知道如何继续下去。
我的问题是:
如何修改异常消息并对其进行自定义以使我仍然通过单元测试?
其实我想自定义异常消息给“学生”Johny“有相关文件!”并且修改了API异常消息,单元测试失败。
Johny是一个可能改变的变量......
任何帮助我如何实现上述目标。感谢
在我的测试课中我有
[ExpectedException(ExceptionType = typeof(Exception), ExpectedMessage = "The DELETE statement conflicted with the REFERENCE constraint \"FK_Issue_Priority\"")]
实际上我正在使用NHibernate,在我的API中我处理异常如下:
catch (NHibernate.ADOException exception)
{
if (exception.InnerException.GetType().Equals(typeof(System.Data.SqlClient.SqlException)))
{
if (exception.InnerException.Message.Contains("FK_Issue_Priority"))
{
throw new Exception("The DELETE statement conflicted with the REFERENCE constraint \"FK_Issue_Priority\"");
}
else
{
throw new Exception("A database error occurred while trying to add the customer to project relation please the see inner exception for details", exception.InnerException);
}
}
else
{
throw exception;
}
}
答案 0 :(得分:2)
出于这个原因,我不会在单元测试中测试异常消息的确切内容 - 它们往往是可变的。
相反,您有两种选择:
明确地派生一个新的基于Exception
的类用于抛出此方法(例如'RelatedFilesExistedException'类)。单元测试可以简单地检查是否正在返回正确的异常类型,而不必担心与消息文本完全匹配。
仅部分匹配异常消息(您必须编写自己的测试代码,而不是回复ExpectedException
属性)。
答案 1 :(得分:0)