diff --git a/notes/helloshop/dot-net-core-testing.md b/notes/helloshop/dot-net-core-testing.md new file mode 100644 index 0000000..e98b06a --- /dev/null +++ b/notes/helloshop/dot-net-core-testing.md @@ -0,0 +1,75 @@ +# 零度框架中的测试 + +使用自动测试是确保应用程序代码按作者期望执行操作的一种绝佳方式。 零度框架中提供单元测试、集成测试和负载测试,.NET 平台上的测试框架有 `xUnit`、`NUnit` 和 `MSTest`,用的最多的是 `xUnit`,无论使用任何一种测试框架,都可以通过命令行或者 IDE 来运行测试。 + +## 单元测试 + +单元测试是一种试验单个软件组件或方法(也称为“工作单元”)的测试。 单元测试仅应测试开发人员控件内的代码。 它们不测试基础结构问题。 基础结构问题包括与数据库、文件系统和网络资源的交互。 + +```csharp +public class Calculator +{ + public int Add(int a, int b) + { + return a + b; + } +} + +public class CalculatorTests +{ + [Fact] + public void Add_WhenCalled_ReturnsTheSumOfArguments() + { + // Arrange + var calculator = new Calculator(); + + // Act + var result = calculator.Add(1, 2); + + // Assert + Assert.Equal(3, result); + } +} +``` + +### 单元测试最佳做法 + +https://learn.microsoft.com/zh-cn/dotnet/core/testing/unit-testing-best-practices + +## 集成测试 + +集成测试与单元测试的不同之处在于,它试验两个或更多软件组件一同工作(也称为其“集成”)的能力。这些测试在更广泛范围的受测系统上运行,而单元测试则侧重于单个组件。 通常,集成测试会包括对基础结构问题的测试。 + +```csharp +public class Calculator +{ + public int Add(int a, int b) + { + return a + b; + } +} + +public class CalculatorTests +{ + [Fact] + public void Add_WhenCalled_ReturnsTheSumOfArguments() + { + // Arrange + var calculator = new Calculator(); + + // Act + var result = calculator.Add(1, 2); + + // Assert + Assert.Equal(3, result); + } +} +``` + +## 负载测试和压力测试 + +负载测试:测试应用是否可以在特定情况下处理指定的用户负载,同时仍满足响应目标,应用在正常状态下运行。 + +压力测试:在极端条件下(通常为长时间)运行时测试应用的稳定性,测试会对应用施加高用户负载(峰值或逐渐增加的负载)或限制应用的计算资源。 + +压力测试可确定压力下的应用是否能够从故障中恢复,并正常返回到预期的行为,在压力下,应用在异常高的压力下运行。 \ No newline at end of file diff --git a/notes/helloshop/multi-tenancy.md b/notes/helloshop/multi-tenancy.md index 45beb51..9379bfd 100644 --- a/notes/helloshop/multi-tenancy.md +++ b/notes/helloshop/multi-tenancy.md @@ -4,6 +4,9 @@ 多租户应用程序是一种软件架构设计,允许单个实例的软件服务多个客户,每个客户被称为一个租户,租户之间的数据自动隔离的,租户之间的数据不会相互影响。 +![multi-tenancy](https://oss.xcode.me/notes/helloshop/multi-tenancy.svg) + + 零度编程官网搜索「多租户」查看多租户设计视频教程。 ## 单表多字段隔离租户数据 @@ -91,3 +94,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) 目前 EF Core 不支持在迁移时自动创建 Schema,需要手动创建 Schema。 + +## 零度框架中实现多租户 + +设计租户表,在登录令牌中包括租户编号,在每次请求中提取令牌中的租户编号,根据租户编号查询租户信息,将租户信息存储在当前请求的上下文中,通过租户信息来隔离租户数据。 \ No newline at end of file