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
- Use the Local-fixture overload that starts from a `KernelProcess` instance instead of the keyed lookup.
- If you need keyed start in local tests, implement/override the method or pre-build and cache the process by key.
- 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
- Branch test code by fixture type and use the supported start overload.
- Document which fixtures support keyed start vs. instance start.
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
- Failed to start process
- Process not found
- Dapr Test Host did not start
- Function Invoke not found in plugin {this.Name}
- The derived DeactivateAsync method failed to complete for st
AI-assisted analysis of microsoft/semantic-kernel@c028a0c7dc (2026-08-13).
Data as JSON: /api/errors/1a09d10e2625dddc.
Report an issue: GitHub.