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

上記の方法の単体テストは次のとおりです

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

この単体テストでは完全なコード カバレッジを得ることができません。

4

2 に答える 2

2

メソッドのキャッチパスをテストしていません。

例外をスローする別の単体テストを作成します。

私はExpectedException属性を使用します:

[ExpectedException(typeof(Exception), "No exception was thrown.")]
于 2013-04-23T13:28:42.170 に答える
0

コード カバレッジを確実に向上させるために、コードを 1 つベースにしてください。

  1. ケースをテストする単体テスト request == null

  2. 例外が正しくスローされることを確認する単体テスト。

この助けを願っています。

于 2013-04-23T13:36:50.030 に答える