2013-04-23 3 views
1

아래 주어진 코드에 대한 유닛 테스트가 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; 
} 

여기에 내가 여기 내 단위 테스트와 잘못하고 있어요 180cm 정도 나는이 단위 테스트로 전체 코드 커버리지를 얻을 수 아니에요 위의 방법

[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); 
    } 

내 단위 테스트입니다.

+0

아마도 단위 테스트에서 예외가 발생하지 않기 때문에 ... –

+1

100 %가 아닌 것을 어떻게 알 수 있습니까? Visual Studio 프로파일 러에는 실행중인 행과 실행 중이 지 않은 행이 표시되어야합니다. –

+2

추가 논리없이 어쨌든 던져 버리려한다면 예외를 잡는 목적은 무엇입니까? – Matthew

답변

2

그럼 방법의 캐치 경로를 테스트하지 않습니다.

예외를 throw하는 또 다른 unittest를 작성하십시오.

내가 ExpectedException 특성 사용합니다 : 확인 코드 커버리지 증가를 만들기 위해

[ExpectedException(typeof(Exception), "No exception was thrown.")] 
0

자료 하나 개 코드를, 당신은 여전히 ​​여기에 더 많은 경우 부족 : 케이스를 테스트하기 위해

  1. 단위 테스트를 request == null

  2. 단위 테스트에서 예외가 올바르게 throw되는지 확인하십시오.

희망 도움말.

관련 문제