使用System.Net.WebClient时,NUnit会导致WebException

时间:2014-07-23 06:05:20

标签: unit-testing visual-studio-2012 nunit webclient mstest

MS test 和通过控制台应用程序运行测试时,以下方法按预期工作。通过 NUnit 测试运行时,我得到一个WebException。

还有其他人遇到过这个问题吗?有办法吗?使用其他测试框架不是一种选择。

public void Download(string username, string password, string dwlFileName, string dwlUrl)
{
    var webClient = new WebClient();

        webClient.Headers.Add("Authorization",
                              "Basic " +
                              Convert.ToBase64String(new ASCIIEncoding().GetBytes(username + ":" + password)));

        webClient.DownloadFile(dwlUrl, dwlFileName);
}

例外:

System.Net.WebException was caught
  HResult=-2146233079
  Message=The remote server returned an error: (403) Forbidden.
  Source=System
  StackTrace:
       at System.Net.WebClient.DownloadFile(Uri address, String fileName)
       at System.Net.WebClient.DownloadFile(String address, String fileName)
       at TestProject.WebHelper.Download(String username, String password, String dwlFileName, String dwlUrl) in TestProject.WebHelper...
  InnerException: null

环境

Visual Studio 2012

NUnit 2.6.3

任何 帮助将不胜感激。谢谢! :)

修改 曾尝试过Nunit testrunner和resharpner测试跑步者。两者都失败了 我使用wireshark来检查发送的数据。并且发现还有一个关于nunit测试的调用,然后是ms-test。

1 个答案:

答案 0 :(得分:0)

在回答这个问题之前,要记住的一件事是实际测试是在测试运行者的过程中运行的。如果跑步者有一些问题/限制可能会干扰。

您是否有多个尝试访问该网址的测试?在这种情况下,服务器可能会有一些安全策略,并且会丢弃可能被认为是拒绝服务的请求(过于相似而过于常见)。

尝试添加用户代理标头:webClient.Headers.Add("user-agent", "Other");