[英]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");
}
根據單元測試結構和單元測試 剖析下的信息,您應該創建一個帶有屬性ClassCleanUp
的清理方法,以在完成所有測試后停止HttpListener。
除了ClassCleanUp
標簽,你可以標記你的方法是與創建HttpListener ClassInitialize
,確保執行測試之前的HttpListener總是被調用,刪除的要求打電話給你有當前的構造。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.