Selenium en OWin Selfhost - 如何调试?

时间:2017-12-06 13:05:22

标签: c# selenium owin

我想创建一个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();
    }

所以,我希望收到回复,但是一旦遇到断点,请求就会保持待定状态。

1 个答案:

答案 0 :(得分:0)

您的测试和您的OWIN应用程序是分开的。不要混合它们。您不应该像对单元测试那样运行UI测试 - 创建模拟实例并对其进行测试。

编译您的OWIN应用。部署它。运行。然后从针对部署的应用程序的单独进程开始测试。 (可选)在测试完成后停止服务器。 这是所谓的正确CI / CD过程的一部分。

好的,现在问你的问题:这个Driver = new ChromeDriver();是非阻塞的。因此该方法完成后,垃圾收集器会清理,这实际上意味着您的OWIN应用程序死亡。

好的,这是简化版。如果您描述了断点,则整个应用程序都会停止,因此无法处理您的响应。

这是错误的,但是你真的需要在同一个应用程序中做到这一点:

  1. 从某个基础继承所有测试类
  2. 在[OneTimeSetup](nUnit)或等效方法的基础中,在单独的线程上创建owin服务器,该服务器在明确告知之前不会停止(while(!ready2Exit){Thread.Sleep(100);})
  3. [OneTimeTearDown]中的
  4. ready2Exit设置为true;
  5. 但请注意,这是一个严重的错误。