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