microsoft/semantic-kernel · warning · NotImplementedException

This method is not implemented in this test fixture.

Error message

This method is not implemented in this test fixture.

What it means

Thrown by the Local runtime `ProcessTestFixture.StartAsync(string key, string processId, KernelProcessEvent initialEvent)` because this 3-arg overload is intentionally not implemented for the local fixture. The local fixture only supports starting from an already-built `KernelProcess` instance (the other `StartAsync` overload). It is a NotImplementedException.

Source

Thrown at dotnet/src/Experimental/Process.IntegrationTestRunner.Local/ProcessTestFixture.cs:37

    /// <param name="kernel">An instance of <see cref="Kernel"/></param>
    /// <param name="initialEvent">An optional initial event.</param>
    /// <param name="externalMessageChannel">channel used for external messages</param>
    /// <returns>A <see cref="Task{KernelProcessContext}"/></returns>
    public async Task<KernelProcessContext> StartProcessAsync(KernelProcess process, Kernel kernel, KernelProcessEvent initialEvent, IExternalKernelProcessMessageChannel? externalMessageChannel = null)
    {
        return await process.StartAsync(kernel, initialEvent, externalMessageChannel);
    }

    /// <summary>
    /// Starts the specified process.
    /// </summary>
    /// <param name="key"></param>
    /// <param name="processId"></param>
    /// <param name="initialEvent"></param>
    /// <returns></returns>
    public Task<KernelProcessContext> StartAsync(string key, string processId, KernelProcessEvent initialEvent)
    {
        throw new NotImplementedException("This method is not implemented in this test fixture.");
    }
}

View on GitHub (pinned to c028a0c7dc)

Solutions

  1. Use the Local-fixture overload that starts from a `KernelProcess` instance instead of the keyed lookup.
  2. If you need keyed start in local tests, implement/override the method or pre-build and cache the process by key.
  3. Branch test code by fixture type to call the supported start method.

Example fix

// before
await fixture.StartAsync("myKey", "procId", initialEvent); // throws in local fixture
// after
var process = BuildProcessByKey("myKey");
await fixture.StartProcessAsync(process, kernel, initialEvent);
Defensive patterns

Strategy: type-guard

Validate before calling

if (fixture is LocalProcessTestFixture)
    throw new NotSupportedException("Local fixture does not support keyed StartAsync; build the KernelProcess and call StartProcessAsync instead.");
await fixture.StartAsync(key, processId, initialEvent);

Type guard

bool SupportsKeyedStart(ProcessTestFixture fixture) => fixture is not LocalProcessTestFixture;

Try / catch

try { await fixture.StartAsync(key, processId, initialEvent); }
catch (NotImplementedException ex) when (ex.Message.Contains("not implemented in this test fixture"))
{ _logger.LogWarning(ex, "Falling back to process-instance start for local fixture."); /* use other overload */ }

Prevention

When it happens

Trigger: Call the keyed overload `StartAsync(string key, string processId, KernelProcessEvent)` on the local test fixture; shared test code that abstracts over both Dapr and Local fixtures and invokes the keyed-start contract.

Common situations: Porting tests from the Dapr fixture (which supports keyed start) to the Local fixture; generic test harnesses that call the keyed overload regardless of runtime.

Related errors


AI-assisted analysis of microsoft/semantic-kernel@c028a0c7dc (2026-08-13). Data as JSON: /api/errors/1a09d10e2625dddc. Report an issue: GitHub.