更新:配置节名称书写错误

master
bicijinlian 2 years ago
parent 5ec6a8c26c
commit 89826caf27

@ -1,5 +1,5 @@
{
"AppName": "customAppNmae",
"AppName": "customAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "custom@163.com",

@ -1,5 +1,5 @@
{
"AppName": "developmentAppNmae",
"AppName": "developmentAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "development@163.com",

@ -1,5 +1,5 @@
{
"AppName": "JsonAppNmae",
"AppName": "JsonAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "json@163.com",

@ -1,5 +1,5 @@
{
"AppName": "productAppNmae",
"AppName": "productAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "product@163.com",

@ -1,5 +1,5 @@
{
"AppName": "customAppNmae",
"AppName": "customAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "custom@163.com",

@ -1,5 +1,5 @@
{
"AppName": "developmentAppNmae",
"AppName": "developmentAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "development@163.com",

@ -1,5 +1,5 @@
{
"AppName": "JsonAppNmae",
"AppName": "JsonAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "json@163.com",

@ -1,5 +1,5 @@
{
"AppName": "productAppNmae",
"AppName": "productAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "product@163.com",

@ -32,7 +32,7 @@ namespace OptionStudy.UnitApp
//断言
Assert.NotNull(appOption);
Assert.Equal($"{env}AppNmae", appOption.AppName);
Assert.Equal($"{env}AppName", appOption.AppName);
Assert.Equal("0.0.0.1", appOption.AppVersion);
//子配置节父配置对象的属性名必须和配置KEY保持一致否则不能自动绑定。
@ -79,7 +79,7 @@ namespace OptionStudy.UnitApp
//断言
Assert.NotNull(appOption);
Assert.Equal($"{envValue}AppNmae", appOption.AppName);
Assert.Equal($"{envValue}AppName", appOption.AppName);
Assert.Equal("0.0.0.1", appOption.AppVersion);
//子配置节父配置对象的属性名必须和配置KEY保持一致否则不能自动绑定。

@ -35,7 +35,7 @@ namespace OptionStudy.UnitApp
//断言
Assert.NotNull(appOption);
Assert.Equal("JsonAppNmae", appOption.AppName);
Assert.Equal("JsonAppName", appOption.AppName);
Assert.Equal("0.0.0.1", appOption.AppVersion);
//子配置节父配置对象的属性名必须和配置KEY保持一致否则不能自动绑定。
@ -63,7 +63,7 @@ namespace OptionStudy.UnitApp
//断言
Assert.NotNull(appOption);
Assert.Equal("JsonAppNmae", appOption.AppName);
Assert.Equal("JsonAppName", appOption.AppName);
Assert.Equal("0.0.0.1", appOption.AppVersion);
//子配置节父配置对象的属性名必须和配置KEY保持一致否则不能自动绑定。

@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xunit;
namespace OptionsPattern.Sutdy.Advanced
{
public class OptionsFactoryTest : IDisposable
{
private readonly ITestOutputHelper? _output;
public OptionsFactoryTest(ITestOutputHelperAccessor outputHelperAccessor)
{
if (outputHelperAccessor == null)
{
throw new ArgumentNullException(nameof(outputHelperAccessor));
}
_output = outputHelperAccessor.Output;
}
[Fact]
public void Test()
{
}
public void Dispose()
{
}
}
}

@ -1,5 +1,5 @@
{
"AppName": "customAppNmae",
"AppName": "customAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "custom@163.com",

@ -1,5 +1,5 @@
{
"AppName": "developmentAppNmae",
"AppName": "developmentAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "development@163.com",

@ -1,5 +1,5 @@
{
"AppName": "JsonAppNmae",
"AppName": "JsonAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "json@163.com",

@ -1,5 +1,5 @@
{
"AppName": "productAppNmae",
"AppName": "productAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "product@163.com",

@ -61,4 +61,8 @@
</None>
</ItemGroup>
<ItemGroup>
<Folder Include="3依赖注入\" />
</ItemGroup>
</Project>

@ -19,12 +19,6 @@ namespace OptionsPattern.Sutdy.Advanced
{
public class Startup
{
//生成主机方法
//public IHostBuilder CreateHostBuilder()
//{
//}
/// <summary>
/// 配置主机方法
/// 内部可以配置 IConfiguration
@ -40,25 +34,15 @@ namespace OptionsPattern.Sutdy.Advanced
//设置应用配置
hostBuilder.ConfigureAppConfiguration((context, builder) =>
{
builder
.AddEnvironmentVariables()
.AddJsonFile("Configs/appsettings.json",false,true)
.AddJsonFile($"Configs/appsettings.{context.HostingEnvironment.EnvironmentName}.json",true,true)
.Build()
;
});
//集成 Opentelemetry
//var tracerProvider = Sdk.CreateTracerProviderBuilder()
// .AddSource("Xunit.DependencyInjection")
// .AddConsoleExporter();
}
/// <summary>
/// 配置服务方法
/// (不支持重载)
/// </summary>
//public void ConfigureServices(IServiceCollection services)
//{
//}
/// <summary>
/// 配置服务方法
/// 注入或用途 IConfiguration IHostEnvironment 请使用 context.xx;

@ -3,13 +3,21 @@ namespace OptionsPattern.Sutdy.Advanced
public class UseXunitTest:IDisposable
{
private readonly ITestOutputHelper? _output;
public UseXunitTest(ITestOutputHelperAccessor outputHelperAccessor)
private readonly IConfiguration _defaultConfig;
public UseXunitTest(ITestOutputHelperAccessor outputHelperAccessor,IConfiguration configuration)
{
if (outputHelperAccessor == null)
{
throw new ArgumentNullException(nameof(outputHelperAccessor));
}
if (outputHelperAccessor == null)
{
throw new ArgumentNullException($"参数 {nameof(outputHelperAccessor)} 为 null, 请在 Startup.cs 中注册 IConfiguration");
}
_output = outputHelperAccessor.Output;
_defaultConfig = configuration;
}
@ -23,6 +31,21 @@ namespace OptionsPattern.Sutdy.Advanced
_output?.WriteLine("6.2 配置选项 进阶!");
}
/// <summary>
/// 从IoC中获取默认配置
/// 1、引入 Xunit.DependencyInjection 库
/// 2、Startup.cs 中设置默认配置
/// </summary>
[Fact]
public void GetIConfiguration_FromDI_ByStartup_Test()
{
var appOption = _defaultConfig.Get<AppOption>();
Assert.NotNull(_defaultConfig);
Assert.NotNull(appOption);
Assert.Contains(nameof(AppOption.AppName), appOption.AppName);
}
/// <summary>
/// 断言不发生异常
/// 使用xUnit 变通方法

@ -1,5 +1,5 @@
{
"AppName": "JsonAppNmae",
"AppName": "JsonAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "json@163.com",

@ -1,5 +1,5 @@
{
"AppName": "customAppNmae",
"AppName": "customAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "custom@163.com",

@ -1,5 +1,5 @@
{
"AppName": "developmentAppNmae",
"AppName": "developmentAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "development@163.com",

@ -1,5 +1,5 @@
{
"AppName": "JsonAppNmae",
"AppName": "JsonAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "json@163.com",

@ -1,5 +1,5 @@
{
"AppName": "productAppNmae",
"AppName": "productAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "product@163.com",

@ -40,7 +40,7 @@ namespace OptionsPattern.Sutdy.Experience
Assert.NotNull(configuration);
Assert.NotNull(appOption);
Assert.Equal("JsonAppNmae", appOption.AppName);
Assert.Equal("JsonAppName", appOption.AppName);
Assert.Equal(new Version(0,0,0,1), appOption.AppVersion);
Assert.Equal("json@163.com", appOption.EMail?.ReceiveAddress);
Assert.Equal("json", appOption.EMail?.Recipient);

@ -37,11 +37,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OptionStudy.UnitApp", "Opti
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OptionStudy.Next", "OptionStudy.Next\OptionStudy.Next.csproj", "{559F6F82-A440-4D85-9F04-01CE26B1A6E6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OptionsPattern.Sutdy.Experience", "OptionsPattern.Sutdy.Experience\OptionsPattern.Sutdy.Experience.csproj", "{9C73DFBD-E1BC-4B27-84AA-35848088D888}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OptionsPattern.Sutdy.Experience", "OptionsPattern.Sutdy.Experience\OptionsPattern.Sutdy.Experience.csproj", "{9C73DFBD-E1BC-4B27-84AA-35848088D888}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OptionsPattern.Sutdy.Experience.ConsoleApp", "OptionsPattern.Sutdy.Experience.ConsoleApp\OptionsPattern.Sutdy.Experience.ConsoleApp.csproj", "{703D8C74-2B39-470B-9108-A36FF8263FAE}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OptionsPattern.Sutdy.Experience.ConsoleApp", "OptionsPattern.Sutdy.Experience.ConsoleApp\OptionsPattern.Sutdy.Experience.ConsoleApp.csproj", "{703D8C74-2B39-470B-9108-A36FF8263FAE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OptionsPattern.Sutdy.AdvancedAdvanced", "OptionsPattern.Sutdy.Advanced\OptionsPattern.Sutdy.Advanced.csproj", "{D5744BA1-4D24-4D4D-A479-2293DEB7A8CF}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OptionsPattern.Sutdy.Advanced", "OptionsPattern.Sutdy.Advanced\OptionsPattern.Sutdy.Advanced.csproj", "{D5744BA1-4D24-4D4D-A479-2293DEB7A8CF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -74,6 +74,7 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{E9FE0FBE-0E22-4C3D-ACF3-7538EDA1FB2A} = {8684FFF4-D613-45AE-8CBF-D6370CB034C3}
{FA9BF369-7571-4A25-A1B4-AB69088BDE3C} = {97685B5C-8532-48B0-A813-3CC629F31FD3}
{4892AF59-813D-4957-9ADC-72871AC58C68} = {97685B5C-8532-48B0-A813-3CC629F31FD3}
{E3F8F3F8-F4A9-42EA-8AA5-862B0754A1B3} = {6F45CE67-FAA8-4FF8-87C9-E8752B0734BF}

Loading…
Cancel
Save