簡體   English   中英

單元測試WCF服務正在啟動

[英]Unit Testing WCF Service is launching

我是WCF的新手。 我創建了一個基本服務,並用調試器和WCFTestClient對它進行了工程師測試。 我從未寫過自己的WCF客戶端。 現在,我需要為該服務構建單元測試。

我的課程:

IXService
CXService
CServiceLauncher

(是的,我知道C前綴不符合當前的標准,但是我的客戶的標准要求它。)

可以直接針對XService測試我的服務功能,但是我也需要測試CServiceLauncher 我要做的就是連接到URI,並發現那里是否有服務在運行,以及它提供了什么方法。

我讀過的其他問題:

測試大綱:

    public void StartUiTest()
    {
        Uri baseAddress = new Uri("http://localhost:8080/MyService");
        string soapAddress = "soap";
        IUserInterface target = new CServiceLauncher(baseAddress, soapAddress);
        try
        {
            Assert.AreEqual(true, target.StartUi());
            /// @todo Assert.IsTrue(serviceIsRunning);
            /// @todo Assert.IsTrue(service.ExposedMethods.Count() > 4);
            Assert.Inconclusive("This tells us nothing about the service");
        }
        finally
        {
            target.StopUi();
        }
    }

我只需要構建一個簡單的客戶端。

參考: http//webbeyond.blogspot.com/2012/11/wcf-simple-wcf-client-example.html

  1. 將服務參考添加到測試項目
  2. 添加到測試文件:

    using System.ServiceModel;

    using MyTests.ServiceReferenceNamespace;

try中的代碼現在是:

            Assert.AreEqual(true, target.StartUi());
            XServiceClient client = new XServiceClient();
            client.GetSessionID();
            Assert.AreEqual(CommunicationState.Opened, client.State, "Wrong communication state after first call");

這不是一個真正的答案,所以請放輕松。

我一直在嘗試做類似的事情,並且了解到集成測試很困難。 這很困難,因為您需要執行許多隱藏的任務,例如:

  • 確保您可以定期運行測試
  • 確保集成測試可以在測試環境上運行
  • 維護不同的配置文件,因為您的環境將與測試環境不同
  • 配置可以自動運行集成測試(CI)的設備
  • 祈禱路徑,測試環境,配置,托管平台等都不會發生變化。
  • 爭取安全權限,因為通常情況下,如果沒有管理員權限,測試對象就無法托管WCF服務
  • 維護測試工具

對我來說,這是巨大的頭痛,卻毫無收獲。 不要誤會我的意思,集成測試是一件很積極的事情,它只需要大量時間進行開發和支持。

我學到了什么? 這樣做不會影響WCF服務的集成測試。 相反,我編寫了大量的單元測試來測試合同,狀態和行為。 通過涵蓋這些內容,我可以確定軟件的質量。 在部署過程中,我會與WCF進行集成。 通常,這只是配置環境或VM的一場戰斗,然后,下次,部署將以(半)自動化的方式順利進行並順利進行。

大多數人也會使用Chef等工具自動進行部署,這些工具可以完全配置環境並部署WCF服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM