gpt4 book ai didi

c# - 测试完成后关闭连接

转载 作者:太空宇宙 更新时间:2023-11-03 23:46:49 25 4
gpt4 key购买 nike

我想使用单元测试来测试我的 HTTP 监听器的功能。但是我很难让它在完成后停止收听。

    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() 可以解决问题...但我不知道如何解决?

我尝试使用有序测试,但出现了各种不同的问题。即使我改变了它的端口来监听它似乎会随机使用我之前选择的一个,然后永远不可用。而且,它远非理想。

最佳答案

您可以在测试完成后使用 TestCleanupAttribute 清理所有内容。

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

并将您的 Init 放入 ClassInitializeAttribute 中:

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

MSDN: Unit Testing Framework

关于c# - 测试完成后关闭连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27358579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com