2012-06-13 22 views
2

我想測試一些涉及HttpClient工作的異步方法,用vs820表達win8並且它是測試框架。無論我如何嘗試,我總是會得到同樣的例外。單元測試異步方法:無法解析遠程主機協議

例如本次測試代碼:

[TestMethod] 
public async Task Connect() 
{ 
    HttpClient client = new HttpClient(); 
    string reply = await client.GetStringAsync("http://google.com"); 
    Assert.AreNotEqual(0, reply.Length); 
} 

這應該也許可以工作的考慮是:http://www.richard-banks.org/2012/03/how-to-unit-test-async-methods-with.html

拋出

System.Net.WebException: The remote name could not be resolved: 'google.com' 

相同的代碼只是正常調用時從實際的程序(不是測試用例)。 任何幫助表示讚賞。

+0

如果您同步執行測試用例,測試用例是否可以正常工作? – svick

+0

有沒有在.net 4.5中這樣做的方法?我只能在HttpClient類中看到異步請求方法。 –

+0

對,'HttpClient'沒有同步方法。但是你可以嘗試像'client.GetStringAsync(url).Result'這樣的東西。 – svick

回答

1

請參閱我的意見,我可以將此作爲對您的問題的答案。

您是否正在使用metro風格的單元測試模板?如果是,您需要在應用程序清單文件中啓用Internet客戶端(我認爲) - >功能來允許此行爲?外部調用,這不是一個單元測試,它更多的是一個集成測試。

我有整整用了你有相同的代碼和我得到完全相同的錯誤。正如我所說,如果您只勾選Package.appxmanifest - > Capabilities - > Internet(Client)複選框,則您應該通過測試。

+0

謝謝你的回答'Package.appxmanifest'顯然是個問題。雖然我不能說我之前提供的代碼有效 - 每當我嘗試運行提供的啓用了Internet(客戶端)功能的測試時,VS都會崩潰。 –