End-to-end tests that run the real system

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.

CI NuGet OpenSSF Scorecard

[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);
});

Why StoveDotnet?

Real application

Your ASP.NET Core API or Generic Host runs in-process on a real port. Stove changes configuration, not application behavior.

Real dependencies

Databases, brokers and caches run through Testcontainers. WireMock handles only the third-party APIs you do not own.

Failure evidence

Correlated traces, logs and broker observations are attached to the test that caused them, so failures explain themselves.

Framework neutral

Use xUnit, NUnit, MSTest or TUnit and keep your existing assertion library. Stove owns no custom test runner.

Supported systems

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.

Choose a path

Preview software

StoveDotnet is evolving toward its first stable API. Pin package versions in application repositories and read the GitHub release notes before upgrading.