.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     }

 

测试结果

 

 

 

 

posted on 2023-04-14 16:55  是水饺不是水饺  阅读(26)  评论(0)    收藏  举报

导航