.Net 测试项目的用户特定数据和机密数据存储在哪里?

Where to store user specific and secret data for .Net test project?

我有 NUnit 测试项目,它正在测试某些远程服务的网关。

我有 public/private 密钥来管理我在该服务上的帐户。

现在我将这些密钥存储在代码中。但对于用户特定和秘密数据来说,这是错误的方式。我必须对版本控制系统和其他人隐藏它。

那么,这样的数据存放在哪里比较好?

我的想法:

我想使用 *.csproj.user 但是否可以在此文件中存储和访问自定义数据?

除非是用于测试并且帐户是假的,否则您应该永远不要存储用户凭据,绝对不要存储 SSH 密钥,除非它是 OEM 安全产品。

您最好在单元测试设置中创建随机帐户并使用这些帐户或模拟身份验证调用的结果。

通常,您将测试数据存储在 CSV / Xslx 文件中,并且通过要测试的方法执行值的每一行。您也可以使用数据库执行此操作。这是一个示例:

对于需要敏感访问凭据信息的方法,您应该使用不能用于危害系统的已知工作和非工作值进行隔离测试。

public static class ApiKeys {

    private static IConfiguration Config { get; set; }
    public static string PublicKey => Config.GetValue<string>( "service-public-key" );
    public static string SecretKey => Config.GetValue<string>( "service-secret-key" );


    static ApiKeys() {
        Config = new ConfigurationBuilder()
        .AddEnvironmentVariables()
        //.AddIniFile( "api-keys.ini", true ) // in this case you must add "api-keys.ini" to .gitignore file.
        .Build();
    }


}