是否可以在VS2010的单元测试中执行时,以交互方式调试Web服务?

时间:2012-11-01 14:51:23

标签: .net vb.net web-services unit-testing visual-studio-debugging

基本上,我在DLL项目中有一个非常标准的Web服务调用,在构建的调试服务器下运行。

看起来像这样

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

如果我运行项目,我可以使用fiddler向它发送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调用是否成功并返回有效信息。

但是,如果我在被测试的实际函数中设置断点,它就永远不会被击中。

我发现了这个问题

Can I debug while running a VS Unit Test?

但是我试过了,没有骰子。

我猜我没有配置单元测试的正确配置,所以它没有在可以调试的上下文中启动实际的DLL,但到目前为止,我什么都没找到。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

是的,你可以。

确保您的调试器附加到托管实际服务的正确进程(IIS或Cassini进程),而不是单元测试(仅作为客户端)。

我要做的是:

  • 设置VS实例以调试Web进程
  • 使用调试实例设置任何所需的断点
  • 使用另一个VS实例来运行测试