当前位置: 首页 > news >正文

万网站建设制作网页界面工具

万网站建设,制作网页界面工具,深圳外贸响应式网站建设,网站建设设计 昆山AutoFixture是一个.NET库#xff0c;旨在简化单元测试中的数据设置过程。通过自动生成测试数据#xff0c;它帮助开发者减少测试代码的编写量#xff0c;使得单元测试更加简洁、易读和易维护。AutoFixture可以用于任何.NET测试框架#xff0c;如xUnit、NUnit或MSTest。 默…AutoFixture是一个.NET库旨在简化单元测试中的数据设置过程。通过自动生成测试数据它帮助开发者减少测试代码的编写量使得单元测试更加简洁、易读和易维护。AutoFixture可以用于任何.NET测试框架如xUnit、NUnit或MSTest。 默认情况下AutoFixture生成的字段值很多时候都满足不了测试需求,比如: public class User {public int Id { get; set; }public string Name { get; set; } null!;[EmailAddress]public string? Email { get; set; }[StringLength(512)]public string? Address { get; set; }public DateTime CreatedAt { get; set; } DateTime.Now; }如果直接使用 CreateT()生成的User对象,他会默认给你填充Id为随机整数,Name和Email为一串Guid,显然这里的邮箱地址生成就不能满足要求,并不是一个有效的邮箱格式 那么如何让AutoFixture按需生成有效的测试数据呢?方法其实有好几种: 一、直接定制 var fixture new Fixture(); fixture.CustomizeUser(c c.With(x x.Email, 特定值).Without(x x.Id));这里With方法用于指定属性的具体值而Without方法用于排除某些属性不被自动填充。 二、使用匿名函数 这在需要对生成的数据进行更复杂的操作时非常有用。 var fixture new Fixture(); fixture.CustomizeUser(c c.FromFactory(() new User {Email 通过工厂方法生成, }));三、实现ICustomization接口 对于更复杂的定制需求可以通过实现ICustomization接口来创建一个定制化类。这种方法的好处是可以重用定制逻辑并且使得测试代码更加整洁。 public class MyCustomClassCustomization : ICustomization {public void Customize(IFixture fixture){fixture.CustomizeUser(c c.With(x x.Email, 自定义值).Without(x x.Id));} } // 使用定制化 var fixture new Fixture(); fixture.Customize(new MyCustomClassCustomization());四、使用BuildT方法 BuildT方法提供了一种链式调用的方式来定制类型的生成规则这在只需要对单个对象进行简单定制时非常方便。 var myCustomObject fixture.BuildUser().With(x x.Email, ${Guid.NewId()}example.com).Without(x x.Id).Create();最佳实践 这里以xunit测试框架为例,我们需要提前引用AutoFixture,AutoFixture.Xunit2库实现一个UserAutoDataAttribute类继承自InlineAutoDataAttribute 重写GetData方法大致代码如下: public class UserAutoDataAttribute : InlineAutoDataAttribute{public UserAutoDataAttribute(params object[] values) : base(values){ArgumentNullException.ThrowIfNull(values[0]);}public override IEnumerableobject[] GetData(MethodInfo testMethod){var fixture new Fixture();//这里使用上面的4种方式的一种,亦或者根据自身情况定制!var user fixture.BuildUser()//.With(x x.Id, 0).Without(x x.Id) //ID需要排除因为EFCore需要插入时自动生成.With(x x.Email, ${Uuid7.NewUuid7()}example.com) //邮箱地址,需要照规则生成.Create();yield return new object[] { Values[0], user };}}下面是一个测试用例,需要填充db和一个自动生成的User参数 public class UnitOfWorkTests(ITestOutputHelper output) {[Theory][UserAutoData(1)][UserAutoData(2)]public async Task MyUnitOfWorkTest(int db, User user){var services new ServiceCollection();services.AddLogging();services.AddDbContextTestDbContext(options {options.UseInMemoryDatabase($test-{db});});services.AddUnitOfWorkTestDbContext();var provider services.BuildServiceProvider();var uow provider.GetRequiredServiceIUnitOfWorkTestDbContext();//add userawait uow.GetRepositoryUser().InsertAsync(user);await uow.SaveChangesAsync();// select uservar user2 await uow.GetRepositoryUser().FindAsync(1);Assert.NotNull(user2);// delete useruow.GetRepositoryUser().Delete(1);var row await uow.SaveChangesAsync();Assert.Equal(1, row);// select useruser2 await uow.GetRepositoryUser().GetFirstOrDefaultAsync(x x.Id 1);Assert.Null(user2);} }如果你已经习惯编写单元测试但还没有使用AutoFixture那么推荐你尝试一下。
http://www.zqtcl.cn/news/297307/

相关文章:

  • 免费的源码网站有哪些ui界面设计总结心得
  • 那个网站可以做视频app制作北京私人做网站
  • 西安市网站制作公司外贸网站建设步骤
  • 学做网站是什么专业广州建站外包公司历史长
  • 网站必备功能桂林网站建
  • 网站导航栏特效网站地图后台可以做吗
  • 站长工具亚洲高清个人网站建设研究意义
  • 网站制作哪家最好数商云怎么样
  • 做棋牌网站违法嘛免费下载百度
  • 兰州营销型网站建设直播app怎么开发
  • 生成拼贴的网站小程序源码之家
  • 想搭建网站学什么长春市建设局网站
  • 深圳做三网合一网站云主机玩游戏
  • 网站打开慢网站制作多少钱?
  • 网站制作多少钱一个月做教育培训应该注册什么公司
  • 网站价格套餐自己网站上做淘宝搜索引擎
  • 个人博客网站的设计与实现百度信息流投放
  • 廊坊网站关键字优化企业网站系统建设
  • 建设一个网站主要受哪些因素的影响php网站后台教程
  • 做购物网站学什么技术go 网站开发
  • 第一个做电子商务的网站工信部网站 备案
  • 一个完整的网站建设花都有沒有网站建设的
  • 哪个网站有适合小学生做的题目建站工具模板
  • 做家教网站赚钱么网站建设算行政工作吗
  • 网站建设seo网络推广专业的营销团队哪里找
  • 能用的网站关于申请开通网站建设的请示
  • 蓬莱网站建设哪家专业怎么样模仿网站
  • 网站建设有什么好处如何查看网站开发源码
  • 惠州做棋牌网站建设哪家好老域名新网站
  • 机械毕业设计代做网站如何快速模仿一个网站