.net core 创建单元测试
项目名称以Test结尾
在测试项目中 使用内存数据库
Nuget 下载
Microsoft.EntityFrameworkCore.InMemory
编写测试用例 后缀 通常Should结尾
Assert 断言 来判断测试结果对错
1 public class ArticleServicesShould
2 {
3 private readonly DbContextOptions<BBSContext> _dbContextOptions;
4
5 public ArticleServicesShould()
6 {
7 _dbContextOptions = new DbContextOptionsBuilder<BBSContext>().
8 UseInMemoryDatabase(databaseName: "in-memory").Options;
9 }
10
11 [Fact]
12 public async Task AddNewItemAsIncompleteForAdditionalAsync()
13 {
14 using (BBSContext context = new BBSContext(_dbContextOptions))
15 {
16
17 var repostiory = new BaseRepository<Article>(context);
18 var articleRepostiory = new ArticleRepository(context);
19 var articleSerice = new ArticleService(articleRepostiory, repostiory);
20
21 var fakeArticle = new Article
22 {
23 Id = 1,
24 Tag = "test",
25 Title = "test",
26 Content = "test",
27 CreateUser = new UserInfo()
28 {
29 Id = 11,
30 Email = "1@qq.com",
31 CreateTime = DateTime.Now,
32 HeadPortrait = "头像",
33 LoginName = "sa",
34 UserName = "sa",
35 Phone = "12345678912",
36 LoginPassWord = "1",
37 Introduction = "个人介绍"
38 },
39 Cover = "封面",
40 CreateUserId = 1,
41 };
42 // Act动作
43 // 补录三天前
44 await articleSerice.AdditionalItemAsync(fakeArticle, true, 3);
45 //开始测试用例
46 var itemsInDataBase = await context.Articles.CountAsync();
47 //断言 添加后 等于 1
48 Assert.Equal(1, itemsInDataBase);
49 var item = await context.Articles.FirstAsync();
50 //断言 标题等于 test
51 Assert.Equal("test", item.Title);
52 //断言3:是否为补录三天前,当然误差值距离期望值小于一秒
53 var difference = DateTime.Now.AddDays(-3) - item.CreateTime;
54 Assert.True(difference < TimeSpan.FromSeconds(1));
55
56 }
57
58 }
59 }
测试结果