开始用C#实现单元测试,使用MSTest
在这个特定的测试中,我试图验证是否抛出了 ArgumentNullException
。尽管我的代码确实抛出了异常,但我的测试失败了,因为它显然没有收到那种类型的异常。
我哪里错了?一定会很简单....
我的测试是这样的:
[TestMethod()]
[ExpectedException(typeof(ArgumentNullException), "A null HttpContent was inappropriately allowed")]
public void Test_HttpContent_Null_Throws_Exception()
{
MultipartFormDataMemoryStreamProvider provider = new MultipartFormDataMemoryStreamProvider();
Assert.ThrowsException<ArgumentNullException>(()=>provider.GetStream(null, null));
}
GetStreams()
方法如下所示:
public override Stream GetStream(HttpContent parent, HttpContentHeaders headers)
{
if (parent == null)
throw new ArgumentNullException("parent");
if (headers == null)
throw new ArgumentNullException("headers");
var contentDisposition = headers.ContentDisposition;
if (contentDisposition == null)
throw new InvalidOperationException("Did not find required 'Content-Disposition' header field in MIME multipart body part.");
_isFormData.Add(String.IsNullOrEmpty(contentDisposition.FileName));
return base.GetStream(parent, headers);
}
最佳答案
这一行中的断言正在处理异常:
Assert.ThrowsException<ArgumentNullException>(()=>provider.GetStream(null, null));
因此,就 ExpectedException
而言,测试框架并未发现它被抛出。您可以删除属性或断言:
[TestMethod()]
[ExpectedException(typeof(ArgumentNullException), "A null HttpContent was inappropriately allowed")]
public void Test_HttpContent_Null_Throws_Exception()
{
MultipartFormDataMemoryStreamProvider provider = new MultipartFormDataMemoryStreamProvider();
provider.GetStream(null, null);
}
关于c# - 尽管抛出异常,但测试 ExpectedException 的单元测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44048231/