簡體   English   中英

測試完成后關閉連接

[英]Close connection when testing is done

我想使用單元測試來測試我的HTTP Listener的功能。 但是我很難讓它在完成后停止聆聽。

    private HttpListener listener = new HttpListener();

    public ListenerTests()
    {
        listener.Start("1234");
    }

    //Test if the listener can respond
    [TestMethod]
    public void TestResponse()
    {
        WebClient client = new WebClient();

        string response = client.DownloadString("http://localhost:1234/");
        Assert.IsNotNull(response);
    }

    //Test if the server can stop without issues
    [TestMethod]
    public void TestStop()
    {
        listener.Stop();
    }

如果我只運行TestStop()測試,它將始終停止監聽,並在第二次運行時它工作正常。 如果我同時運行它將首次正常工作,但第二次“測試執行引擎”仍在運行,而端口不可用。

我認為在所有測試之后運行Stop()可以解決問題...但我無法弄清楚如何?

我嘗試使用Ordered Tests但是它有各種不同的問題。 即使我改變了它上面的端口來監聽它,它似乎隨機使用我之前選擇的一個,然后永遠不可用。 而且,它遠非理想。

測試完成后,您可以使用TestCleanupAttribute清理所有內容。

[TestCleanup]
public void TestStop()
{
    listener.Stop();
}

並將您的Init放在ClassInitializeAttribute中:

[ClassInitialize]
public void ListenerInit()
{
    listener.Start("1234");
}

MSDN:單元測試框架

根據單元測試結構和單元測試 剖析下的信息,您應該創建一個帶有屬性ClassCleanUp的清理方法,以在完成所有測試后停止HttpListener。

除了ClassCleanUp標簽,你可以標記你的方法是與創建HttpListener ClassInitialize ,確保執行測試之前的HttpListener總是被調用,刪除的要求打電話給你有當前的構造。

暫無
暫無

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

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