我试图了解如何在ASP.NET Core6WebAPI控制器上进行集成测试。我试着跟踪所有的,所以我可以找到一些帖子和建议,但出于某种原因,我总是碰到指南中没有提到的错误。
EventControllerTests.cs
namespace UnitTests.ProjectToBeTested.Controllers
{
public class EventControllerTests
{
[Fact]
public async Task EventController_Post_RespondsOkIfRequestContainsCorr
我正在向ASP.NET核心web服务添加集成测试(请参阅微软在Integration tests in ASP.NET Core上的文章,我已经扩展了WebApplicationFactory,将数据库提供者替换为内存中的数据库。但是,ASP.NET核心web服务包括默认情况下启用的其他服务。 每个服务都可以通过服务对象停止/禁用,但对WebApplicationFactory.ConfigureServices()上的GetRequiredService()的调用会抛出System.InvalidOperationException。 有没有人知道有没有办法禁用默认服务?
如何使用AutomaticDecompression设置WebApplicationFactory
示例API与Content-Encoding: gzip一起返回JSON。
public class BasicTests : IClassFixture<WebApplicationFactory<Startup>>
{
private readonly WebApplicationFactory<Startup> _factory;
public BasicTests(WebApplicationFactory<Startup>
我想在我的集成测试中使用WebApplicationFactory设置环境。默认情况下,env设置为Development。我的web应用程序工厂的代码如下所示: public class CustomWebApplicationFactory<TStartup> : WebApplicationFactory<TStartup>
where TStartup : class
{
protected override void ConfigureWebHost(IWebHostBuilder builder)
{
builder
我有两个解决方案。
使用.NET Core3.1的Web
使用XUnit.NET和.NET Core3.1进行集成测试,该项目对Web项目有一个参考
这里有一个示例集成测试类。
public class CustomersControllerTests : IClassFixture<WebApplicationFactory<WebAPIProject.Startup>>
{
public CustomersControllerTests(WebApplicationFactory<WebAPIProject.S
我想做一个集成测试(使用WebApplicationFactory)来测试我的路由配置和序列化层。 我希望测试结果(大致)是这样的: var controllerSpy = new BooksControllerSpy(201);
var factory = new WebApplicationFactory<Startup>();
var client = factory.WithWebHostBuilder(builder =>
{
// ???? inject controllerSpy into con
我试着运行集成测试并得到这个错误。
System.InvalidOperationException:入口点在没有构建IHost的情况下退出。在Microsoft.Extensions.Hosting.HostFactoryResolver.HostingListener.CreateHost() at Microsoft.Extensions.Hosting.HostFactoryResolver.<>c__DisplayClass10_0.b__0(String[] args)在Microsoft.AspNetCore.Mvc.Testing.DeferredHostBuil
我正在将我现有的ASP.Net 5 web应用程序迁移到ASP.Net 6,并遇到了通过集成测试的最后障碍。
我自定义WebApplicationFactory并引发异常:Changing the host configuration using WebApplicationBuilder.WebHost is not supported. Use WebApplication.CreateBuilder(WebApplicationOptions) instead.
public class CustomWebApplicationFactory<TStartup> :
我正在尝试使用WebApplicationFactory在CI中正确运行一些测试
当我们通过IDE运行这些测试时,它们会在本地通过,但它们会失败,因为
System.InvalidOperationException: Solution root could not be located using application root
当我们在CI中运行它们时。
在CI中,我们有一个名为integration_tests的目录,其中包含多个用于测试的dll文件,我们运行vstest命令来测试这些dll,但那里没有.sln文件。
我们的WebApplicationFactory是这样的:
fact
我正在使用以下指南实现.NET核心3.1应用程序的集成测试:。这是我目前的测试课程:
public class IntegrationTests : IClassFixture<WebApplicationFactory<main_app.Startup>>
{
private readonly WebApplicationFactory<main_app.Startup> _factory;
public TestTest(WebApplicationFactory<main_app.Startup> factory) {
我有一个目前按设计工作的应用程序,但在我扩展之前,我正在尝试设置与xUnit的集成测试。目前,测试只在执行测试时使用原始服务,我不知道为什么。
这是一个考验:
using IStoreRepository = Repositories.V3.Interfaces.IStoreRepository;
public class StoreTests : IClassFixture<WebApplicationFactory<Startup>> {
private readonly ITestOutputHelper _output;
private rea
我试图在现有的.net 6.0项目中添加一些集成测试,但仍会遇到一些问题
现在,如果我运行这个测试,它会击中await host.RunAsync(CancellationToken.None);在Program.cs中的一行,然后永远挂起,看起来什么都不做。
我错过了什么吗?如果不是,我如何解决这个问题?
Program.cs
public /*static*/ class Program
{
public static async Task Main(string[] args)
{
var host = BuildWebHost(args);
我想了解Polly如何重新尝试通过Startup.ConfigureServices()配置的polly可以进行测试。
ConfigureServices
中配置了Polly策略。
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpClient<IHttpClientService, HttpClientService>()
.SetWaitAndRet
在我的Startup类中,我通过autofac为RegisterAssemblyTypes提供了一个have方法,如下所示:
public class Startup
{
public void ConfigureContainer(ContainerBuilder builder)
{
builder.RegisterModule(new ApplicationModule());
}
}
public class ApplicationModule : Autofac.Module
{
protected override void Loa
我在使用定制的WebApplication工厂
public class CustomWebApplicationFactory<TStartup> : WebApplicationFactory<TStartup> where TStartup: class {
protected override void ConfigureWebHost(IWebHostBuilder builder) {
builder.ConfigureServices(services => {
// Create a new serv
我一直在遵循教程为我的项目编写集成测试。
执行以下操作,我可以使用模拟版本的依赖项覆盖我的应用程序的DI配置:
public class ApiWebApplicationFactory : WebApplicationFactory<Api.Startup>
{
protected override void ConfigureWebHost(IWebHostBuilder builder)
{
// Is be called after the `ConfigureServices` from the Startup
// whi
我运行的ASP.NET核心身份(UserManager<TUser>和那个爵士),支持EF核心商店。最近,我的应用程序中出现了一个错误,其中控制器端点导致了对UserManager<T>.UpdateAsync(...)的太多调用。
由于我已经设置了集成测试(使用了WebApplicationFactory<TStartup>设置和UseInMemoryDatabase(...)),所以我希望编写一个集成/冒烟测试,如果控制器端点超过其查询预算,就会警告我。
基本上,我很想写(但不能写)这个测试:
public class FooControllerTest
如何从CustomWebApplicationFactory中获取所有服务?启动类为IDepartmentRepository和IDepartmentAppService执行了依赖项注入。想要获取新的DI存储库或服务。
我们正在创建指向原始应用程序启动的集成测试。
namespace Integrationtest
{
public class CustomWebApplicationFactory<TStartup> : WebApplicationFactory<TStartup> where TStartup : class
{
p
我为集成测试创建了一个mvc测试,并遵循了这里的示例(Integration Tests in ASP.NET Core),这加载了XUnit项目的启动,但由于注入了自动映射器而失败。 你知道这意味着什么吗? 测试类 // WebApplicationFactory<TEntryPoint> is used to create a TestServer for the integration tests.
public class ServiceHttpClientTest : IClassFixture<WebApplicationFactory<Startup&
我一直在使用Xunit为一个使用数据库的.NET Core3.1Web应用程序创建集成测试。为了进行测试,我从中切换到内存中的数据库。CustomWebApplicationFactory代码是:
public class CustomWebApplicationFactory<TStartup> : WebApplicationFactory<TStartup> where TStartup : class
{
protected override void ConfigureWebHost(IWebHostBuilder webHos
目前,我在.NET 6上有一个web应用程序,使用WebApplicationFactory进行集成测试。下面是我的Program.cs文件的简化版本:
var builder = WebApplication.CreateBuilder(args);
var services = builder.Services;
var configuration = builder.Configuration;
services.AddAuthentication()
.AddJwtBearer(o =>
{
var configs = c
我有一个带有一些简单Razor页面和Web控制器的ASP.NET核心项目。
我使用作为起点。我重新命名了项目名称,删除了MVC内容,并添加了一些自己的代码。一切都运转正常。
但是,在调用factory.CreateClient()时,集成测试会引发以下错误
Test Name: ToDo.Tests.Integration.Web.HomeControllerIndexShould.ReturnViewWithCorrectMessage
Test FullName: ToDo.Tests.Integration.Web.HomeControllerIndexShould.ReturnVi
我的集成测试很简单。我调用创建应用程序API,然后检查应用程序记录是否正确插入。
这是我的CustomWebApplicationFactory:
public class CustomWebApplicationFactory<TStartup> : WebApplicationFactory<Startup>
{
public CustomWebApplicationFactory()
{
Configuration = new ConfigurationBuilder()
.SetBasePath(Direc
设置
Windows 10
Visual Studio Professional 2017 v15.9.9
ASP.NET核心2.2
EF核心2.2
脱衣舞
xUnit 2.4.1
描述
我正在使用来自WebApplicationFactory包的Microsoft.AspNetCore.Mvc.Testing来设置我的集成测试。
我一直在跟踪来定制web主机配置。
SUT使用Dapper从数据库进行查询,因此我不使用随Memory附带的用于此特定集成测试的内存中提供程序。
设置WebApplictionFactory的代码如下:
public class Cu
我的服务中托管了Identity Server 4。它公开了各种端点,并且我希望从相同的服务访问token端点。它没有公开任何接口,因此我只能将其作为依赖项注入,因此我必须发出一个http请求。 现在我将HttpClient的urls设置如下: var req = _contextAcessor.HttpContext.Request;
var baseAddr = $"{req.Scheme}://{req.Host}";
client.BaseAddress = new Uri(baseAddr);
var addr = _urlHelperProvider.GetUr