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

时间:2016-06-30 18:39:24

标签: c# unit-testing static-members multiple-projects

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

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

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

感谢您的任何见解!

2 个答案:

答案 0 :(得分:1)

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

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

中执行

p.s。

测试不应取决于全球状态。 此外,单项测试不应依赖于其他测试。

如果希望测试并行执行

,这将特别棘手

这里有一个很好的说法,为什么全球国家是坏的,你可以做些什么: https://www.youtube.com/watch?v=-FRm3VPhseI

答案 1 :(得分:1)

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

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