4

我正在运行 ac# 单元测试(VS 2008)。在测试中,我确实写入了设置,这应该会导致将数据保存到 user.config。

Settings.Default.X = "History"; // X is string
Settings.Default.Save();

但这根本不会创建文件(我在“C:\Documents and Settings\HW\Local Settings\Application Data”下进行了交叉检查)。

如果我创建与控制台应用程序相同的东西,那么持久化数据就没有问题(相同的代码)。

我需要考虑在 UnitTest 中执行此操作有什么特别的吗?

4

3 回答 3

5

我在 Windows 7 上使用 Visual Studio 2010 进行了尝试,Visual Studio 单元测试框架实际上正在为测试应用程序创建一个临时文件夹,我在其中找到了具有正确设置的 user.config 文件。我认为在 VS 2008 上可能是一样的。这些文件夹的路径方案是这样的:

Windows 10 路径:

C:\Users\$USER$\AppData\Local\Microsoft_Corporation\UnitTestAdapter__Running__StrongName_{guid}\{number}

Windows Vista/七路径:

C:\Users\$USER$\AppData\Local\Microsoft_Corporation\TestAppDomain{Number}

Windows XP 路径:

C:\Documents and Settings\$USER$\Local Settings\Microsoft_Corporation\TestAppDomain{Number}

祝你好运。

于 2010-04-22T23:48:19.230 回答
1

单元测试项目只是类库。没有应用程序上下文,因此您可能会遇到问题,因为设置对象不知道将设置文件归档在哪个公司/应用程序下。

我不确定,但它可能只是在内存中创建它。

于 2010-04-22T23:27:59.467 回答
0

感谢您的帮助,它对找到问题有很大帮助。路径提示帮助我“了解正在发生的事情”并找到麻烦制造者。

顺便说一句,这个片段

 config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal)
 config.FilePath

查找存储位置很有用。

我的问题是我在 Reload() 之前调用了 Reset()。实际上,我的测试用例检查对象是否存储正确,因此它会保存并重新加载设置。我不知道 Reset() “重置并保存在磁盘上”这一事实 - 我假设它只在内存中重置。我必须只调用 Reload()。

由于所有测试用例都有自己的目录,因此必须在测试用例中创建(保存)设置。

于 2010-04-23T16:05:32.847 回答