Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不同测试项目中测试间的静态变量_C#_Unit Testing_Static Members_Multiple Projects - Fatal编程技术网

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

C# 不同测试项目中测试间的静态变量,c#,unit-testing,static-members,multiple-projects,C#,Unit Testing,Static Members,Multiple Projects,我的Visual Studio解决方案中有3个项目:1个共享库项目、1个单元测试项目(主要是Selenium WebDriver测试)和1个编码UI测试项目。我很难将我的单元测试和编码UI测试组合到一个项目中,所以我们有2个。我在名为Globals.Status的共享库项目中有一个静态类,该类具有静态属性 我有一个测试用例,它需要在Selenium单元测试的broswer和编码UI测试的桌面应用程序中完成工作。Selenium单元测试更改此静态状态变量。编码UI项目中的编码UI测试需要读取此更新

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

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

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


谢谢你的洞察力

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

您可以做的是将单元测试代码移动到新类中,并在UI测试中执行它

p、 美国

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

如果您希望测试并行执行,这将特别棘手

这里有一个很好的话题,为什么全球状态不好,以及你能做些什么:

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


有几种合理的方法可以做到这一点。我想到了AppFabric缓存、Redis或者Memcached

编写测试时,应避免依赖于执行操作的其他测试。您应该能够选择套件中的任何单个测试,运行它,并让它正确运行。如果你不能,你应该重新考虑测试套件的设计。我理解这个概念。是的,理想情况下,我会将这两个测试合并为一个测试。不幸的是,如前所述,我很难将SeleniumWebDriver和编码的UI测试代码放在同一个项目中。这一特定的功能测试需要在web浏览器(即Selenium)中完成一些工作,然后在桌面应用程序(即编码的UI)上完成一些其他工作。感谢您对AppDomain的建议和见解。是的,我知道这不是理想的设计。我无法让SeleniumWebDriver和编码的UI库在同一个测试项目中很好地结合在一起,所以我不得不将它们分开。如果时间允许,我可能必须再次尝试将它们合并为一个。将单元测试代码移动到共享库项目,然后您就可以从UI测试调用它,而无需添加对库的DependenciesHanks的引用来获取此建议。最后,我将该值保存在一个文本文件中,以便CUIT测试读取。