【问题标题】:Username/Password for testing in windows phone and store apps用于在 Windows Phone 和商店应用程序中进行测试的用户名/密码
【发布时间】:2013-12-26 02:22:21
【问题描述】:

我编写了一个小型库,可通过 https 链接获取受密码保护的数据。该库在 Windows 8.1、Windows Phone 8 和 Windows Store 8.1 的桌面下运行。我现在需要完成我的测试工具。这个项目很快就会出现在github上。

为了正确测试这一点,我需要一个用户名/密码。由于这是开源的,我不想将我的用户名/密码存储在那里(显然)。在针对桌面应用程序运行时,我倾向于使用 Windows 提供的密码存储(凭据管理器控制面板,存储在通用凭据下。这工作正常。代码扫描凭据缓存以查找所需的任何内容,加载它并运行测试。

但是对于 Windows Phone 或 Windows Store 的测试呢?如何安全地缓存这样的用户名/密码,以便我的代码仍然可以公开?我开始考虑将一个特殊的空文件放入源代码管理中。在构建过程中会查找此文件的实际版本,如果找到,则将其复制过来(并且它是某种资源文件),然后在其中包含用户名和密码。等等。

我在这个项目中使用 VS2013 和 MSTest。

其他人是如何解决这个问题的?非常感谢!

【问题讨论】:

    标签: c# windows windows-phone-8 windows-store-apps mstest


    【解决方案1】:

    对于我在 GitHub 上获得的几个需要 API 密钥的 REST 客户端库,我已将凭据存储在源树之外的已知位置,但由单元测试加载运行。这使它成为我们的源代码控制,允许其他人提供他们自己的密钥来运行单元测试并且很简单。这种方法可以推广到您提到的各种平台的独特存储要求,但我只需要在直窗口上使用它。

    example from a unit test project

    编辑 是的,在商店和手机应用程序中,您对文件系统的访问权限有限。您将需要使用 IsolatedStorage 或将凭据视为测试程序集中的嵌入式资源。我发现后者更容易。

    为了使您的凭据远离 GitHub,您可以将凭据添加为嵌入式资源文件,然后添加 tell git to ignore it。下载您的代码的人在提供所述文件之前无法构建它,但这可能就是您想要的。类似的事情可以通过构建前/构建后事件来实现;从已知位置 pre-build 复制资源,然后删除 post build(确保 post build 设置为始终运行)。

    【讨论】:

    • 谢谢!这在桌面上会很好用,但我不知道如何在 WP8 上做到这一点 - 测试在手机上运行,​​它在虚拟机中,所以我认为没有任何访问权限。此外,在 Windows 应用商店应用中,您可能没有完全访问文件系统的权限(我没有仔细研究过)。
    【解决方案2】:

    您可以使用PasswordVault 存储 Windows 应用商店应用程序 (Windows 8.1) 的用户名和密码。可以看到控制面板的凭证管理器。

    Best practice for saving sensitive data in Windows 8

    对于 WP8,没有这样的东西,所以最好存储在隔离存储中并进行一些加密。

    【讨论】:

    • 谢谢。我会调查 PasswordVault。对于 WP8,我如何将它存储在隔离存储中 - 这些只是测试运行 - 所以它们在我的开发计算机上,并且它们应该在无人看管的情况下运行......我是否需要在 WP8 上运行一些特殊的东西才能将密码添加到我的测试人员的隔离存储的上下文?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    相关资源
    最近更新 更多