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

Static variable across tests in different test projects

我的 Visual Studio 解决方案中有 3 个项目:1 个共享库项目、1 个单元测试项目(主要是 Selenium WebDriver 测试)和 1 个编码 UI 测试项目(我遇到了困难将我的单元测试和编码 UI 测试合并到 1 个项目中 - 所以我们有 2)。我在名为 Globals.Status.

的共享库项目中有一个静态 class 和一个静态 属性

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

我有引用共享库项目和单元测试项目的编码 UI 测试项目,但显然这还不够。我需要做什么才能完成这项工作?

感谢您的任何见解!

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

你可以做的是将单元测试代码移动到新的 class 并在 UI-test

中执行它

p.s.

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

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

下面是关于为什么全局状态不好以及您可以采取什么措施的好方法: https://www.youtube.com/watch?v=-FRm3VPhseI

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

有几种合理的方法可以做到这一点。 AppFabric Cache、Redis 或 Memcached 浮现在脑海中。