是否可以 属性 到 ExpectedException 中的消息?
Is possible to property to a message in ExpectedException?
我正在尝试验证异常和消息 returned,但我在此消息中有一个可变的文件名。是否可以只用一种方法使用单元测试来做到这一点?
public static string FileName
{
get
{
return "EXT_RF_ITAUVEST_201605091121212";
}
}
[TestMethod()]
[ExpectedException(typeof(Exception), String.Format("Error on file {0}", FileName))]
public void ValidarNomeArquivo_DataNomeIncorreta_Mensagem()
{
throw new Exception(String.Format("Error on file {0}", FileName));
}
上面的代码return错误"An attribute argument must be constant expression, typeof expression or array creation expression of an attribute parameter type."。
在你的情况下,我不会使用 ExpectedException
,而是手动执行它的逻辑。
public static string FileName
{
get
{
return "EXT_RF_ITAUVEST_201605091121212";
}
}
[TestMethod()]
public void ValidarNomeArquivo_DataNomeIncorreta_Mensagem()
{
//This try block must contain the entire function's logic,
// nothing can go after it to get the same behavor as ExpectedException.
try
{
throw new Exception(String.Format("Error on file {0}", FileName));
//This line must be the last line of the try block.
Assert.Fail("No exception thrown");
}
catch(Exception e)
{
//This is the "AllowDerivedTypes=false" check. If you had done AllowDerivedTypes=true you can delete this check.
if(e.GetType() != typeof(Exception))
throw;
if(e.Message != String.Format("Error on file {0}", FileName))
throw;
//Do nothing here
}
}
我正在尝试验证异常和消息 returned,但我在此消息中有一个可变的文件名。是否可以只用一种方法使用单元测试来做到这一点?
public static string FileName
{
get
{
return "EXT_RF_ITAUVEST_201605091121212";
}
}
[TestMethod()]
[ExpectedException(typeof(Exception), String.Format("Error on file {0}", FileName))]
public void ValidarNomeArquivo_DataNomeIncorreta_Mensagem()
{
throw new Exception(String.Format("Error on file {0}", FileName));
}
上面的代码return错误"An attribute argument must be constant expression, typeof expression or array creation expression of an attribute parameter type."。
在你的情况下,我不会使用 ExpectedException
,而是手动执行它的逻辑。
public static string FileName
{
get
{
return "EXT_RF_ITAUVEST_201605091121212";
}
}
[TestMethod()]
public void ValidarNomeArquivo_DataNomeIncorreta_Mensagem()
{
//This try block must contain the entire function's logic,
// nothing can go after it to get the same behavor as ExpectedException.
try
{
throw new Exception(String.Format("Error on file {0}", FileName));
//This line must be the last line of the try block.
Assert.Fail("No exception thrown");
}
catch(Exception e)
{
//This is the "AllowDerivedTypes=false" check. If you had done AllowDerivedTypes=true you can delete this check.
if(e.GetType() != typeof(Exception))
throw;
if(e.Message != String.Format("Error on file {0}", FileName))
throw;
//Do nothing here
}
}