程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 關於VSTS對WebService進行單元測試時遇到的問題

關於VSTS對WebService進行單元測試時遇到的問題

編輯:.NET實例教程

今天使用VSTS的測試框架對ASP.Net構建單元測試,用了以前一些應用測試一下,一路下來,相當順暢,但當我隨便創建一個Web Service的時候,生成的測試代碼卻老是運行不下去,提示如下類似的錯誤:

Web 請求“http://localhost:15495/”在未運行測試的情況下成功完成。這種情況會在為測試配置 Web 應用程序失敗(處理請求時發生 ASP.NET 服務器錯誤)時或未執行任何 ASP.NET 頁(URL 可能指向一個 Html 頁、一個 Web 服務或一個目錄列表)時發生。在 ASP.NET 中運行測試要求 URL 解析為 ASP.Net 頁,並且該頁在 Load 事件發生之前一直正確執行。請求的響應連同測試結果一起存儲在文件“WebRequestResponse_HelloWorldTest.Html”中,通常可使用 Web 浏覽器打開此文件來查看其內容。

找了好多原因,web.config,網站的路徑,網頁中的錯誤,什麼都找過,都不見有什麼不對勁的東西,正當我百思不得其解的時候,往以前做好的網站中添加Web Service的時候,再創建單元測試,竟然就順利通過,再沒有上面那段錯誤信息,認真的對比了一下測試代碼,發覺唯一不同的就是新加的Web Service測試中自動封裝了一個訪問器Accessor進行訪問,查看元數據代碼:



using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;

[Shadowing("ws1")]
public class ws1_Accessor : BaseShadow
...{
    protected static PrivateType m_privateType;

    [Shadowing(".ctor@0")]
    public ws1_Accessor();
    public ws1_Accessor(PrivateObject __p1);

    public static PrivateType ShadowedType ...{ get; }

    public static ws1_Accessor AttachShadow(object __p1);
    [Shadowing("HelloWorld@0")]
    public string HelloWorld();
}

也沒有什麼特別,我想沒有這個封裝也是可以,最後只好把目光放在那些測試的屬性中去,我暫時用到的屬性有這幾個:



[HostType("ASP.Net")]
[ASPNetDevelopmentServerHost("%PathToWebRoot%\ws_test2", "/ws_test2")]
[UrlToTest("http://localhost/ws_test2")]
[DeploymentItem("app_code.dll")]


其中ASPNetDevelopmentServerHost只在用文件服務器的時候要用上,在IIS上運作就不需要,其後我還在IIS上調試過,問題依然如故.

再細看那段錯誤提示,其中說到"未執行任何 ASP.Net 頁時發生",我想是不是HostType惹得禍,試著把它注釋掉,測試竟然可以順利運行了,問題暫時解決了,但納悶的事又來了,屏蔽掉HostType屬性,那麼默認訪問HostType又是什麼,在MSDN上沒有找到答案,望知道的大大告知小弟一聲,不勝感激!
 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved