2010-01-12 84 views
3

這是我第一次測試Asp.Net Web應用程序。 我們有一個由多個模塊組成的引擎。我需要在引擎模塊中測試類。 儘管這些類是Asp.Net應用程序的一部分,但它們僅由業務邏輯組成。ASP.NET應用程序的單元測試配置

我該如何測試這些類別是否屬於WebApp的其他部分?因爲我得到這個錯誤

Web請求'http://localhost:8936/'沒有運行測試成功完成。當爲測試配置Web應用程序失敗時(處理請求時發生ASP.NET服務器錯誤),或者沒有執行ASP.NET頁面時(URL可能指向HTML頁面,Web服務或目錄列表)。在ASP.NET中運行測試需要將URL解析到ASP.NET頁面,並使頁面正確執行到Load事件。來自該請求的響應被存儲在具有測試結果的文件'WebRequestResponse_BlogManagerBPOConstr.html'中;通常可以使用Web瀏覽器打開此文件以查看其內容。

感謝

編輯: @馬克,這是由設計師產生的TestMethods之一

/

// <summary> 
     ///A test for BlogManagerBPO Constructor 
     ///</summary> 
     // TODO: Ensure that the UrlToTest attribute specifies a URL to an ASP.NET page (for example, 
     // http://.../Default.aspx). This is necessary for the unit test to be executed on the web server, 
     // whether you are testing a page, web service, or a WCF service. 
     [TestMethod()] 
     [HostType("ASP.NET")] 
     [AspNetDevelopmentServerHost("D:\\WorkingCopies\\MyProject\\Engine", "/")] 
     [UrlToTest("http://localhost:8936/")] 
     public void BlogManagerBPOConstructorTest() 
     { 
      BlogManagerBPO target = new BlogManagerBPO(); 
      Assert.Inconclusive("TODO: Implement code to verify target"); 
     } 
+0

您使用的是什麼單元測試框架? – 2010-01-12 20:23:37

+0

微軟提供的VS2008「Microsoft.VisualStudio.QualityTools.UnitTestFramework」 – 2010-01-12 21:37:31

+0

@asdi:儘管MS可能稱之爲,但這不是單元測試。我重新標記了您的問題,以吸引稍微不同的受衆羣體,可能可以幫助您解決這個問題。 – 2010-01-12 21:46:55

回答

5

你得到聽起來並不像它的異常消息一個單元測試。你想要運行一個Visual Studio Web測試套件嗎?

對於單元測試,您應該簡單地創建業務邏輯類的實例並測試它們,而不受ASP.NET運行時的干擾。

在MSTest的,可能看起來是這樣的:

[TestMethod] 
public void Test5() 
{ 
    var sut = new Thing(); 
    var expectedResult = new object(); 
    sut.Bar = expectedResult; 
    var actual = sut.Bar; 
    Assert.AreEqual(expectedResult, actual); 
} 

(也許不是最激動人心的測試,雖然...)

沒有具體ASP.NET遍尋。

如果你把業務邏輯在一個單獨的庫,並確保它不引用的System.Web這是最好的保證,等

+0

我已經使用NUnit手動編寫了測試,並且能夠使用外部NUnit IDE成功運行。我試圖在VS2008中使用/練習「UnitTestFramework」和Microsoft提供的集成的內置測試環境。 – 2010-01-12 21:44:04

+0

如果你想編寫測試NUnit風格,你也可以使用MSTest。只是不要使用他們所有的蹩腳嚮導,而只是創建一個新的測試項目,並開始向項目添加新的單元測試。 – 2010-01-12 21:53:53

+0

還有一件事,我現在在NUnit中使用「斷言」。 我確實需要「模擬」對象來測試許多方法。我如何創建Mocks? – 2010-01-12 22:00:24

2

設置UrlToTest到URL屬性在測試。像:

[TestMethod()] 
[HostType("ASP.NET")] 
[AspNetDevelopmentServerHost("C:\\xx\\xx\\Documents\\Visual Studio 2010\\Projects\\xx\\xx", "/")] 
[UrlToTest("http://localhost:xxx/examples.aspx")] 
[DeploymentItem("examples.dll")] 
1

或類似馬克說,擺脫
[HostType("ASP.NET")] [AspNetDevelopmentServerHost("C:\xx\xx\Documents\Visual Studio 2010\Projects\xx\xx", "/")] [UrlToTest("http://localhost:xxx/examples.aspx")] [DeploymentItem("examples.dll")] 試圖在MVC項目中使用它,它沒有過去,直到我擺脫它

0

只是檢查,如果你已經將app.config添加到您的測試項目中,並且它已經從您的web.config(來自WebService項目)進行了必要的設置。