Real application
Your ASP.NET Core API or Generic Host runs in-process on a real port. Stove changes configuration, not application behavior.
StoveDotnet for .NET 10
Start your real dependencies, inject their connection details into your real application, and test the complete behavior through one focused DSL.
[Fact]
public Task Creates_order_when_stock_is_available() => stove.Test(async t =>
{
var response = (await t.Http().Post<Order>("/orders", new { productId = "chair" }))
.Expect(HttpStatusCode.Created);
await t.Postgres().ShouldQuery(
"select status from orders where id = @id",
row => row.GetString(0),
rows => Assert.Equal(["Created"], rows),
new NpgsqlParameter("id", response.Body.Id));
await t.Kafka().ShouldBePublished<OrderCreated>(
message => message.Value.OrderId == response.Body.Id);
});
Your ASP.NET Core API or Generic Host runs in-process on a real port. Stove changes configuration, not application behavior.
Databases, brokers and caches run through Testcontainers. WireMock handles only the third-party APIs you do not own.
Correlated traces, logs and broker observations are attached to the test that caused them, so failures explain themselves.
Use xUnit, NUnit, MSTest or TUnit and keep your existing assertion library. Stove owns no custom test runner.
| Area | Modules |
|---|---|
| Applications | ASP.NET Core, Generic Host workers, HTTP clients |
| Databases | PostgreSQL, SQL Server, MongoDB, MySQL |
| Messaging | Kafka, RabbitMQ, Azure Service Bus |
| Infrastructure | Redis, OIDC, controllable time, telemetry |
| Third parties | WireMock and user-supplied dependency containers |
Each module exposes its native client and preserves the behavior that matters for production. Broker observation is
correlated and bounded; database assertions use the real provider; Azure namespaces support TokenCredential for
managed-identity-compatible tests.
Preview software
StoveDotnet is evolving toward its first stable API. Pin package versions in application repositories and read the GitHub release notes before upgrading.