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#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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()
{
}
}
}