Skip to content
This repository has been archived by the owner on Dec 21, 2022. It is now read-only.

提高测试覆盖率 #25

Closed
Tracked by #14
LYZhelloworld opened this issue Jun 25, 2022 · 3 comments
Closed
Tracked by #14

提高测试覆盖率 #25

LYZhelloworld opened this issue Jun 25, 2022 · 3 comments
Assignees

Comments

@LYZhelloworld
Copy link
Contributor

LYZhelloworld commented Jun 25, 2022

实在无法测试的地方(如 Main 函数、Adapter 等)可以用 ExcludeFromCoverage 忽略。

@LYZhelloworld LYZhelloworld changed the title 提高测试覆盖率,尽量达到 100%。实在无法测试的地方(如 Main 函数、Adapter 等)可以用 ExcludeFromCoverage 忽略。 提高测试覆盖率 Jun 25, 2022
@AlisaAkiron
Copy link
Member

Change Request

  1. 不应该为了测试而修改原有的代码
  2. Domain Entity 不可暴露无参构造函数,代码中的无参构造函数仅为 DbContext 检查
  3. Domain Entity 中 Property 不可暴露 setter,更新值必须通过 Domain Entity Method
  4. 从数据库中删除数据前,请先调用 Delete(Guid @operator) 方法,然后再 Remove
  5. 通过在检索时 LINQ 语句句首添加 IgnoreQueryFilters() 来获取已软删除的数据
  6. 不可修改 MaaDbContext,尤其是构造函数,会直接损坏 DI 对 DbContext 的实例化
  7. 测试用 DbContext 请参考 dev 分支上已作出的修改,通过继承重写 OnConfiguring 方法实现而不是侵入式修改原有的 DbContext
  8. 在测试中可以先预定好静态的模型,便于之后测试中调用,需要预先写入数据库的数据,可以重写 OnModelCreating 方法添加 Seed Data,不过必须 override 的方法必须在第一行调用 base.OnModelCreating(modelBuilder);

@LYZhelloworld
Copy link
Contributor Author

  1. 不应该为了测试而修改原有的代码

收到。

  1. Domain Entity 不可暴露无参构造函数,代码中的无参构造函数仅为 DbContext 检查

收到。不过创造测试数据时会很麻烦,而且将来如果加字段会有很多改动。

  1. Domain Entity 中 Property 不可暴露 setter,更新值必须通过 Domain Entity Method

收到。

  1. 从数据库中删除数据前,请先调用 Delete(Guid @operator) 方法,然后再 Remove

没有找到以前写过类似的东西。具体是指什么地方?

  1. 通过在检索时 LINQ 语句句首添加 IgnoreQueryFilters() 来获取已软删除的数据

没有找到以前写过类似的东西。具体是指什么地方?

  1. 不可修改 MaaDbContext,尤其是构造函数,会直接损坏 DI 对 DbContext 的实例化

收到。

  1. 测试用 DbContext 请参考 dev 分支上已作出的修改,通过继承重写 OnConfiguring 方法实现而不是侵入式修改原有的 DbContext

收到。

  1. 在测试中可以先预定好静态的模型,便于之后测试中调用,需要预先写入数据库的数据,可以重写 OnModelCreating 方法添加 Seed Data,不过必须 override 的方法必须在第一行调用 base.OnModelCreating(modelBuilder);

收到。不过目前不需要。

@AlisaAkiron
Copy link
Member

4,5 只是提一下(

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants