不同测试项目中测试之间的静态变量

本文关键字:测试 静态 之间 变量 项目 | 更新日期: 2023-09-27 17:53:44

在我的Visual Studio解决方案中有3个项目:1个共享库项目,1个单元测试项目(主要是Selenium WebDriver测试)和1个编码UI测试项目(我很难将我的单元测试和编码UI测试合并到一个项目中-所以我们有2个)。我在共享库项目中有一个静态类,其静态属性称为Globals.Status。

我有一个测试用例,它需要在浏览器(Selenium单元测试)和桌面应用程序(编码UI测试)中完成工作。Selenium单元测试更改这个静态Status变量。编码的UI测试(在编码的UI项目中)需要读取这个更新的Status变量。当我连续运行这两个测试时,当调用编码的UI测试时,变量为NULL。

我有一个编码的UI测试项目,同时引用了共享库项目和单元测试项目,但显然这还不够。我需要做些什么才能使它工作?

谢谢你的建议!

不同测试项目中测试之间的静态变量

您需要使用在应用程序外部(更具体地说,在执行程序集的内存空间之外)持久化的数据来支持您的属性。

有一些合理的方法可以做到这一点。我想到了AppFabric Cache, Redis,或者Memcached。

我猜你的UI测试运行在新的AppDomain上。每个AppDomain创建自己的所有静态变量的实例。

你所能做的就是将单元测试代码移到一个新的类中,并在UI-test

中执行它

注。

测试不应该依赖全局状态。此外,单个测试不应依赖于其他测试。

如果想要并行执行测试,这将特别棘手

这是一个很好的讨论为什么全局状态是坏的,你可以做些什么:https://www.youtube.com/watch?v=-FRm3VPhseI