Visual Studio单元测试和命令行参数,以避免源代码管理中的密码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual Studio单元测试和命令行参数,以避免源代码管理中的密码相关的知识,希望对你有一定的参考价值。

我正在尝试测试我登录API的能力。当然,这意味着我需要我的测试类来访问我的用户名和密码。但是,我想把这个项目放在公共源代码控制上,所以我不能在代码中共享我的用户名和密码(可以想象)。我会使用命令行参数,因为它们存储在.user文件中(可以保持在源代码控制之外而不会破坏其他用户的项目)。但是,那些似乎并没有真正传递给测试类(至少,当我使用Environment.GetCommandLineArgs()时,我没有看到它们)。那么如何在本地存储我的密码而不会破坏其他用户的项目呢?有办法吗?

答案

常见的方法如下:

  1. 将模板文件添加到项目中,其内容与要存储这些内容的文件相同,只是没有实际值。将空值或虚拟值放在它们的位置。
  2. 将此模板文件添加到源代码管理
  3. 从源代码管理中删除必须包含实际值的文件,并要求它忽略此文件的未来副本。但是,请勿将其从项目中删除。
  4. 添加包含如下命令的预构建构建事件: IF NOT EXIST "$(ProjectDir)App.config" COPY "$(ProjectDir)App-template.config" "$(ProjectDir)App.config"

这现在有这个效果:

  1. 配置文件的模板现在处于源代码管理中,没有敏感信息
  2. 当您克隆或签出项目的新副本时,磁盘上将丢失存储敏感信息的实际文件,Visual Studio将标记它,忽略此
  3. 做一个构建,这将执行上面的命令,有效地检查实际文件是否存在,它不是,然后从模板文件中复制一个新的副本。
  4. 编辑新创建的实际文件,添加敏感信息。
  5. 做另一个构建
  6. 运行单元测试或程序

此方法必须工作,您可以要求源控制工具忽略磁盘上或文件本身中存在的文件,以便在您修改它之后不会自动将其添加到提交中。

另一答案
  1. 将敏感信息(密码)放入单独的“SensitiveInfo.config”文件中。 <?xml version="1.0" encoding="utf-8"?> <appSettings> <add key="SecretPassword" value="87DFG8S7G9S8G98SDFGHSDFG978DA" /> </appSettings>
  2. Sensitive.info“复制到输出目录”设置为“始终复制”
  3. 在“App.Config”中添加:<appSettings file="SensitiveInfo.config"/>
  4. 确保通过将“Sensitive Info.config”文件添加到.hgignore(Mercurial)或.gitignore(Git)中来“忽略”它

以上是关于Visual Studio单元测试和命令行参数,以避免源代码管理中的密码的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 2017 中未发现单元测试

如何在Visual Studio项目和单元测试项目之间建立联系?

在Visual Studio2015中使用单元测试

visual studio 中添加命令行参数

在 Visual Studio 2010 中传递命令行参数?

单元测试 - 扩展 Visual Studio 单元测试类型 - 不工作