我想创建一个Selenium Webdriver测试并为此工作,我想使用OWin SelfHost启动现有的OWin应用程序。
出于某种原因,OWin服务器一旦断点就没有响应......有人能告诉我我做错了吗?
以下是包含更多信息的代码...
[OneTimeSetUp]
public void InitDriverAndBackend()
{
string baseAddress = "http://127.0.0.1:9001/";
httpServer = WebApp.Start<Startup>(url: baseAddress);
Thread.Sleep(30000);
//I have a breakpoint on the line below. Before the breakpoint is hit,
//I receive a response when going one of my webapi's on port 9001
//However, once the breakpoint is hit, the server does not response at all and the request stays pending
Driver = new ChromeDriver();
}
所以,我希望收到回复,但是一旦遇到断点,请求就会保持待定状态。
答案 0 :(得分:0)
您的测试和您的OWIN应用程序是分开的。不要混合它们。您不应该像对单元测试那样运行UI测试 - 创建模拟实例并对其进行测试。
编译您的OWIN应用。部署它。运行。然后从针对部署的应用程序的单独进程开始测试。 (可选)在测试完成后停止服务器。 这是所谓的正确CI / CD过程的一部分。
好的,现在问你的问题:这个Driver = new ChromeDriver();
是非阻塞的。因此该方法完成后,垃圾收集器会清理,这实际上意味着您的OWIN应用程序死亡。
好的,这是简化版。如果您描述了断点,则整个应用程序都会停止,因此无法处理您的响应。
这是错误的,但是你真的需要在同一个应用程序中做到这一点:
(while(!ready2Exit){Thread.Sleep(100);})
ready2Exit
设置为true
; 但请注意,这是一个严重的错误。