Skip to content

Ensure that your project references 'Aspire.Hosting.AppHost' testing builder error is misleading when package is a transitive dependency #7808

@afscrome

Description

@afscrome

Is there an existing issue for this?

  • I have searched the existing issues

Describe the bug

If you create a test builder via DistributedApplicationTestingBuilder.Create(); in a project that has an indirect transitive reference to Aspire.Hosting.AppHost, the test host fails with the error Ensure that your project references 'Aspire.Hosting.AppHost', even though the project does have a reference to that assembly.

Fix is to ensure you have a direct dependency, not a transitive one

Expected Behavior

The test host should either support the transitive dependency, or the error message should explicitly call out that you need a direct (non transitive) dependency)

Image

Steps To Reproduce

dotnet new aspire-starter --test-framework nunit

Add the following test

    [Test]
    public async Task BuilderTest()
    {
        var builder = DistributedApplicationTestingBuilder.Create();
        await using var app = await builder.BuildAsync().WaitAsync(DefaultTimeout);
    }

run dotnet test

Exceptions (if any)

System.InvalidOperationException : No application host assembly was found. Ensure that your project references 'Aspire.Hosting.AppHost'.
  Stack Trace:
     at Aspire.Hosting.Testing.DistributedApplicationTestingBuilder.TestingBuilder.<CreateInnerBuilder>g__FindApplicationAssembly|3_2() in /_/src/Aspire.Hosting.Testing/DistributedApplicationTestingBuilder.cs:line 315
   at Aspire.Hosting.Testing.DistributedApplicationTestingBuilder.TestingBuilder.<>c__DisplayClass3_0.<CreateInnerBuilder>b__0(DistributedApplicationOptions applicationOptions, HostApplicationBuilderSettings hostBuilderOptions) in /_/src/Aspire.Hosting.Testing/DistributedApplicationTestingBuilder.cs:line 290
   at Aspire.Hosting.Testing.TestingBuilderFactory.System.IObserver<System.Collections.Generic.KeyValuePair<System.String,System.Object>>.OnNext(KeyValuePair`2 value) in /_/src/Aspire.Hosting.Testing/DistributedApplicationEntryPointInvoker.cs:line 282
   at System.Diagnostics.DiagnosticListener.Write(String name, Object value)
   at System.Diagnostics.DiagnosticSource.Write[T](String name, T value)
   at Aspire.Hosting.DistributedApplicationBuilder.LogBuilderConstructing(DistributedApplicationOptions appBuilderOptions, HostApplicationBuilderSettings hostBuilderOptions) in /_/src/Aspire.Hosting/DistributedApplicationBuilder.cs:line 484
   at Aspire.Hosting.DistributedApplicationBuilder..ctor(DistributedApplicationOptions options) in /_/src/Aspire.Hosting/DistributedApplicationBuilder.cs:line 134
   at Aspire.Hosting.DistributedApplicationBuilder..ctor(String[] args) in /_/src/Aspire.Hosting/DistributedApplicationBuilder.cs:line 94
   at Aspire.Hosting.Testing.TestingBuilderFactory.CreateBuilder(String[] args, Action`2 onConstructing) in /_/src/Aspire.Hosting.Testing/DistributedApplicationEntryPointInvoker.cs:line 230
   at Aspire.Hosting.Testing.DistributedApplicationTestingBuilder.TestingBuilder.CreateInnerBuilder(String[] args, Action`2 configureBuilder) in /_/src/Aspire.Hosting.Testing/DistributedApplicationTestingBuilder.cs:line 288
   at Aspire.Hosting.Testing.DistributedApplicationTestingBuilder.TestingBuilder..ctor(String[] args, Action`2 configureBuilder) in /_/src/Aspire.Hosting.Testing/DistributedApplicationTestingBuilder.cs:line 281
   at Aspire.Hosting.Testing.DistributedApplicationTestingBuilder.Create(String[] args, Action`2 configureBuilder) in /_/src/Aspire.Hosting.Testing/DistributedApplicationTestingBuilder.cs:line 135
   at Aspire.Hosting.Testing.DistributedApplicationTestingBuilder.Create(String[] args) in /_/src/Aspire.Hosting.Testing/DistributedApplicationTestingBuilder.cs:line 120
   at aspirequickcotnainer.Tests.WebTests.ShortLivedContainer() in S:\aspirequickcotnainer\aspirequickcotnainer.Tests\WebTests.cs:line 13
   at NUnit.Framework.Internal.TaskAwaitAdapter.GenericAdapter`1.GetResult()
   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await(Func`1 invoke)
   at NUnit.Framework.Internal.Commands.TestMethodCommand.RunTestMethod(TestExecutionContext context)
   at NUnit.Framework.Internal.Commands.TestMethodCommand.Execute(TestExecutionContext context)
   at NUnit.Framework.Internal.Execution.SimpleWorkItem.<>c__DisplayClass3_0.<PerformWork>b__0()
   at NUnit.Framework.Internal.ContextUtils.<>c__DisplayClass1_0`1.<DoIsolated>b__0(Object _)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at NUnit.Framework.Internal.ContextUtils.DoIsolated(ContextCallback callback, Object state)
   at NUnit.Framework.Internal.ContextUtils.DoIsolated[T](Func`1 func)
   at NUnit.Framework.Internal.Execution.SimpleWorkItem.PerformWork()

.NET Version info

No response

Anything else?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-app-testingIssues pertaining to the APIs in Aspire.Hosting.Testing

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions