单元测试代码覆盖问题
本文关键字:问题 覆盖 代码 单元测试 | 更新日期: 2023-09-27 18:10:24
我试图找出为什么我的单元测试下面给定的代码没有显示完整的代码覆盖vs2010。这是我用来获取记录的方法。
public Records GetTestRecords(HttpWebRequest request)
{
var Records = new Records();
try
{
if (null != request)
{
var response = (HttpWebResponse)request.GetResponse();
using (var sr = new StreamReader(response.GetResponseStream()))
{
jsonResult = sr.ReadToEnd();
}
Records = myHelper.Deserialize<Records>(jsonResult);
}
}
catch (Exception exception)
{
throw (exception);
}
return Records;
}
下面是我对上面方法
的单元测试[TestMethod()]
public void GetRecordsTest()
{
string mockjsonResult = "{'"recordId'":'"8cccf2deb-4dde-450c-97cd-a6ec'",'"billingAccountId'":'"fake'",'"userid'":81233,'"Checkid'":2533004436741,'"partName'":'"redcredetest'",'"Description'":'"not yet pulling- test'",'"productId'":'"rr43556-23re'",'"created'":'"2013-04-12T21:09:54.4890986Z'",'"enddate'":null,'"autoRenewal'":true,'"changeLog'":{'"reason'":'"dummy.'",'"state'":1,'"time'":'"2013-04-12T21:09:54.48126Z'",'"extensions'":null,'"transactionId'":null}}";
var mocrequest = HttpWebRequest.Create("http://social.stackoverflowtest.com/Forums/getfile/2234");
myProvider target = new myProvider ();
HttpWebRequest request = (HttpWebRequest)mocrequest;
request.Method = "GET";
request.ContentType = "application/json";
Records records = GetMockRecords();
string jsonResult = string.Empty;
var mockWebResponse = request.GetResponse();
var response = (HttpWebResponse)request.GetResponse();
using (var sr = new StreamReader(response.GetResponseStream()))
{
jsonResult = sr.ReadToEnd();
}
records = MyHelper.Deserialize<Records>(mockdjsonResult);
Assert.IsNotNull(records.ProductId);
}
我不能得到完整的代码覆盖与这个单元测试。我做错了我的单元测试在这里。
你没有测试你的方法的catch路径。
编写另一个抛出异常的单元测试。
我会使用ExpectedException
属性:
[ExpectedException(typeof(Exception), "No exception was thrown.")]
基于您的代码,以确保代码覆盖率增加,您仍然缺少更多的案例:
-
单元测试到
request == null
的测试用例 -
确保异常正确抛出的单元测试。