【问题标题】:Is it possible to interactively debug a web service while it's being executed in a Unit Test in VS2010?是否可以在 VS2010 的单元测试中执行 Web 服务时以交互方式调试它?
【发布时间】:2012-11-01 14:51:22
【问题描述】:

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

看起来像这样

<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,但到目前为止,我什么也没发现。

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    是的,你可以。

    确保您的调试器连接到托管实际服务的正确进程(IIS 或 Cassini 进程),而不是单元测试(它只是一个客户端)。

    我会做的是:

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

    【讨论】:

    • 您可能正在做某事,但它似乎对我不起作用。我启动了一个 VS 实例,然后运行 ​​Web 服务项目,它启动并等待连接。然后我启动另一个实例并运行测试。测试项目没有对 web 服务项目或 dll 的引用。当我这样做时,我收到“501 内部服务器错误”。不幸的是,这就是我要做的一切。
    • 我还尝试在单个 vs 实例和托管 Web 服务的实例中附加到 WEBDEV 进程。同样的错误。
    • 如果您不尝试调试,您​​会得到 HTTP 200 OK 而不是 501?
    • 正确。该服务返回得很好,并以我期望的方式响应(它实际上在生产中工作)。我们一直在用 fiddler 进行调试,但这是一个非常手动的过程。
    • 好的。终于解决了。编译目标目录已被移动,这导致了“缺少引用”错误,但我最初并没有看到它。修复后,您的建议效果很好。不理想,因为它肯定需要运行 2 个 VS 实例,第一个包含 web 服务,我只需要启动它,不附加到进程。第二个实例我加载了单元测试项目并在调试中运行测试。这样做,我能够调试测试(在一个实例中)和实际的 Web 服务(在另一个实例中)。很好的交易,感谢您的指点!
    猜你喜欢
    • 2010-12-03
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    相关资源
    最近更新 更多