问题描述
我正在处理一个实例,该实例试图实例化Selenium SpecFlow项目中的共享资源。该资源是一个登录池(Dictionary
约束1:设计该应用程序时不能一次同时登录并不能多次登录。也就是说,许多不同的用户可以同时登录,但同一用户不应同时登录。因此,字典中的各项必须一次限制为一个线程。
约束2:项目上没有依赖项注入,我正在寻找与应用程序状态事件等效的项目。
注1:我来自MVC ASP.NET背景,并且会做诸如global.asax App_Start()方法之类的事情。
注2:我将从“步骤定义”访问“词典”以“保留”登录名,并从钩子访问“释放”登录名。
Specflow中是否有类似的东西?
谢谢 德文
UPDATE 9/24/2020:
我已经在这个问题上做了更多的工作,并且决定参加Singleton课程。在首次调用Singleton之前,不会实例化Singleton,然后只会实例化单个实例。
UPDATE 9/24/2020#1:
我发现了使用Singleton模式的警告,问题在于我们的Specflow项目配置为“具有内存隔离的并行执行”,这意味着您无法在线程之间共享状态,这似乎是根据Specflow推荐的方式。当我发现要获取我的Dictionary
话虽这么说,我不确定即使我确实实现了DI框架,也不会遇到相同的问题。
我现在正在寻找其他形式的持久性存储,可能会尝试使用Azure存储表。
-
参考:具有内存(AppDomain)隔离的Specflow并行执行- https://docs.specflow.org/projects/specflow/en/latest/Execution/Parallel-Execution.html#parallel-execution-with-memory-appdomain-isolation
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)