0

基本的に、私はDLLプロジェクトで、構築されたデバッグサーバーの下で実行されているかなり標準的なWebサービス呼び出しを持っています。

このように見えます

<WebInvoke(Method:="POST", BodyStyle:=WebMessageBodyStyle.Bare, UriTemplate:="")>
Public Function POSTOrder(httpPostOrder As Contract.APIOrder) As Contract.Response.Order
    ....
    Return (httpResponse)
End Function

プロジェクトを実行すると、フィドラーを使用してXML POSTリクエストをプロジェクトに送信できます。上記の関数にブレークポイントを設定すると、プロジェクトがヒットします。

ここで、この関数の簡単な単体テストを設定したいので、テストプロジェクトとこのテストを追加しました。

<TestMethod()>
Public Sub TestPostOrder()
    Dim r As String
    Dim w As New Net.WebClient

    W.Headers.Add("Content-Type", "application/xml")
    Dim x =
            <?xml version="1.0"?>
            <order_info>
                <event_id>103153</event_id>
                <id>1</id>
                .....
            </order_info>
    r = w.UploadString("http://localhost:15034/orders/?api_key={sometext}", "POST", x.ToString)
End Sub

私は知っています、世界で最大のユニットテストではありませんが、それは今のところ重要ではありません。

したがって、このテストを実行すると、実行されて成功します。単体テストをデバッグしてステップスルーし、UPLOADSTRING呼び出しが成功して、有効な情報を返すことを確認することもできます。

ただし、テスト対象の実際の関数にブレークポイントを設定しても、ヒットすることはありません。

この質問を見つけました

VSユニットテストの実行中にデバッグできますか?

しかし、私はそれを試しましたが、サイコロはありませんでした。

単体テストで適切に構成されたものがないので、デバッグ可能なコンテキストで実際のDLLを開始していないと思いますが、これまでのところ、何も見つかりませんでした。

何か案は?

4

1 に答える 1

1

はい、できます。

デバッガーが、単体テスト (単なるクライアント) ではなく、実際のサービスをホストしている適切なプロセス (IIS または Cassini プロセス) に接続されていることを確認してください。

私がすることは次のとおりです。

  • Web プロセスをデバッグするように VS インスタンスを設定する
  • デバッグ インスタンスを使用して、必要なブレークポイントを設定します。
  • 別の VS インスタンスを使用してテストを実行する
于 2012-11-01T15:02:38.530 に答える