You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
3.0 KiB
C#


using OptionStudy.UnitApp.Next;
namespace OptionStudy.Next
{
/// <summary>
/// 环境变量 配置源
/// 环境变量分类:系统环境变量、用户环境变量、进程环境变量
/// 环境变量设置:系统图形工具、编程、启动文件 launchSettings.json(VS环境比较方便)
/// </summary>
public class EnvironmentVariablesConfigurationSourceTest : IDisposable
{
private readonly ITestOutputHelper testOutput;
public EnvironmentVariablesConfigurationSourceTest(ITestOutputHelper testOutputHelper)
{
this.testOutput = testOutputHelper;
}
/// <summary>
/// 设置的进程环境变量,在一次测试运行中会保留
/// 因为一次测试运行中的多个测试方法,是在一个进程中运行的。
/// </summary>
[Theory]
[InlineData("xUnit-First")]
[InlineData("xUnit-Second")]
public void ProcessEnvironmentVariables_Set_Test(string value)
{
var envName = "xUnit:AppName";
var env = Environment.GetEnvironmentVariable(envName);
//一次运行多个测试用例时:
//第一个测试用例运行时是null值但第二个用例运行时就有值其值为第一个用例设置的值
if (env == null)
{
testOutput.WriteLine($"当前用例参数为 {value}, 环境变量 {nameof(envName)} 的值为 null ");
}
else
{
testOutput.WriteLine($"当前用例参数为 {value}, 环境变量 {nameof(envName)} 的值为 {env} ");
}
//设置环境变量,看看在另一个测试工里会不会保留设置的环境变量值
Environment.SetEnvironmentVariable(envName, value, EnvironmentVariableTarget.Process);
}
/// <summary>
/// 设置进程环境变量
/// </summary>
[Fact]
public void Load_Set_ProcessEnvironmentVariables_Test()
{
// 设置进程环境变量
Environment.SetEnvironmentVariable("xUnit:AppName", "xunitAppName", EnvironmentVariableTarget.Process);
Environment.SetEnvironmentVariable("xUnit:AppVersion", "2.2.2.2", EnvironmentVariableTarget.Process);
Environment.SetEnvironmentVariable("xUnit:EMail:ReceiveAddress", "xunit@163.com", EnvironmentVariableTarget.Process);
Environment.SetEnvironmentVariable("xUnit:Email:Recipient", "xunit", EnvironmentVariableTarget.Process);
// 获取配置对象
var root = new ConfigurationBuilder().AddEnvironmentVariables("xUnit:").Build();
var option = root.Get<AppOption>();
Assert.NotNull(option);
Assert.Equal("xunitAppName",option.AppName);
Assert.Equal(new Version(2,2,2,2),option.AppVersion);
Assert.Equal("xunit@163.com",option.EMail?.ReceiveAddress);
Assert.Equal("xunit",option.EMail?.Recipient);
}
public void Dispose()
{
}
}
}