单元测试
ASP.NET Zero启动项目包含单元和集成测试。使用以下工具开发测试:
- xUnit作为测试框架。
- Shouldly 作为断言库。
- Microsoft.EntityFrameworkCore.InMemory 的实体框架和数据库。
- Abp.TestBase简化基于ABP的应用程序的集成测试。
测试涵盖 了项目的域(核心)和应用层。打开测试资源管理器(在VS主菜单中测试 Windows Test Explorer)运行单元测试:
一些单元测试(租户创作,版本创建等)仅适用于多租户概念。您可以将AbpZeroTemplateConsts.MultiTenancyEnabled更改为false,以使您的应用程序成为单一租户。因此,将会跳过与多租户相关的测试。
这些单元测试将是了解代码的指导。此外,它们可以作为您的应用程序功能编写自己的单元测试的模型。
所有单元测试类(实际上是集成测试,因为它们集成到ABP,EntityFramework,AutoMapper和其他应用层使用的库)都是从AppTestBase派生出来的。它初始化ABP系统,使用Effort模拟数据库,为每个测试创建初始测试数据和登录到应用程序。它还为所有测试提供了一些有用的常用方法。
这里,应用中的样品单元测试:
public class UserAppService_Delete_Tests : UserAppServiceTestBase
{
[Fact]
public async Task Should_Delete_User()
{
//Arrange
CreateTestUsers();
var user = await GetUserByUserNameOrNullAsync("artdent");
user.ShouldNotBe(null);
//Act
await UserAppService.DeleteUser(new IdInput<long>(user.Id));
//Assert
user = await GetUserByUserNameOrNullAsync("artdent");
user.IsDeleted.ShouldBe(true);
}
}
它创建一些用户进行测试,然后验证是否有一个名为“artdent”的用户。然后调用用户应用程序服务(正在测试)的DeleteUser方法。最后,检查用户是否被删除。在这里,User是一个软删除实体,所以 如果它被删除,它的IsDeleted属性必须为true。
您可以阅读 本文更好地了解单元测试。
发布到IIS
如果要将解决方案发布到IIS,请检查Microsoft的 文档。