A context in which a Metalama unit test can run, configured with Metalama services and optionally mocks.
Implements
Namespace: Metalama.Testing.UnitTesting
Assembly: Metalama.Testing.UnitTesting.dll
Syntax
public class TestContext : ITempFileManager, IApplicationInfoProvider, IDateTimeProvider, IBackstageService, IDisposableRemarks
This class provides access to the Metalama code model and services for unit testing compile-time logic. Tests should create a TestContext by calling CreateTestContext(string?, string?) rather than using the constructor directly.
Key capabilities:
- CreateCompilation(string, string?, bool, IEnumerable<MetadataReference>?, string?, bool): Create an ICompilation from source code
- WithExecutionContext(ICompilation, string?): Set the execution context for APIs like ExpressionFactory
- ServiceProvider: Access Metalama services
- CancellationToken: A token that signals test timeout
The TestContext must be disposed at the end of each test method; failure to do so will result
in an exception from the finalizer. Using the using statement or using declaration is recommended.
Constructors
| Name | Description |
|---|---|
| TestContext(TestContextOptions, IAdditionalServiceCollection?, CancellationToken) | Initializes a new instance of the TestContext class and specify an optional IAdditionalServiceCollection. Tests typically do not call this constructor directly, but instead the CreateTestContext(IAdditionalServiceCollection, string?, string?) method. |
| TestContext(TestContextOptions, CancellationToken) | Initializes a new instance of the TestContext class. Tests typically do not call this constructor directly, but instead the CreateTestContext(IAdditionalServiceCollection, string?, string?) method. |
Properties
| Name | Description |
|---|---|
| BaseDirectory | Gets the directory that was specifically created for the current test and where all specific files should be stored. |
| CancellationToken | Gets a CancellationToken used to cancel the test in case of timeout. The timeout period is defined by the Timeout option. |
| Logger | |
| PlugIns | |
| ProjectOptions | |
| ServiceProvider | Gets the ProjectServiceProvider for the current context. |
| TestName | Gets the test name, for diagnostics. |