ASP.NET Core 7.0 集成测试找不到参考

ASP.NET Core 7.0 integration tests could not find reference

提问人:GrinGenius 提问时间:11/9/2023 最后编辑:GrinGenius 更新时间:11/9/2023 访问量:68

问:

我有以下项目:

XY.Api 
XY.IntegrationTests (I use xUnit)

我添加了对测试项目的引用,并编写了一个这样的基本测试:XY.Api

public class UnitTest1
{
    [Fact]
    public void Test1()
    {
        Assert.Equal(1, AsdController.ASD());
    }
}

结果如下:

System.IO.FileNotFoundException:无法加载文件或程序集 XY.api,版本=1.0.0.0,区域性=neutral,PublicKeyToken=null'。系统找不到指定的文件。

为什么?

----------编辑--------

如果我运行这个:

[Fact]
        public void Test1()
        {
            List<string> result = new();
            foreach (var a in AppDomain.CurrentDomain.GetAssemblies())
            {
                result.Add(a.Location + "  --  " + a.FullName);
            }


            ;
            //Assert.Equal(1, UsersController.ASD());
        }

在结果列表中不包含 XY。Api.dll ,但在 bin 文件夹中有 XY。Api.dll ...

----- 第二次更新

测试项目 .csproj 文件:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net7.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>

    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
    <PackageReference Include="xunit" Version="2.6.1" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.5.3">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="coverlet.collector" Version="3.2.0">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\..\XY.Api\XY.Api.csproj" />
  </ItemGroup>


</Project>
C# .net-core 集成测试 xunit

评论

0赞 Good Night Nerd Pride 11/9/2023
这两个项目的目标框架是什么?
0赞 GrinGenius 11/9/2023
两者都是NET7.0
0赞 Good Night Nerd Pride 11/9/2023
生成后是否看到任何编译器警告?在解决方案资源管理器中,是否在任一项目的“依赖项”节点上看到任何感叹号?
0赞 GrinGenius 11/9/2023
不,没什么,只是错误。我更新了帖子,等一下。
0赞 Dai 11/9/2023
向我们展示您的.csproj

答:

0赞 Ali Hemati 11/9/2023 #1

1- 检查项目参考:确保 XY.IntegrationTests 项目已正确链接到 XY。Api 项目。可以通过检查测试项目中的 .csproj 文件来确认这一点,其中应有一个类似于以下内容的条目:

<ItemGroup>
  <ProjectReference Include="..\XY.Api\XY.Api.csproj" />
</ItemGroup>

2- 另外,查看生成设置:确保两个项目都设置为以相同的配置生成,例如“调试”或“发布”。如果生成配置不匹配,则可能导致测试项目找不到 API 项目的正确生成。

评论

0赞 GrinGenius 11/9/2023
Holly shit,如果我将测试项目 Build Configuration 修改为 Release 而不是 Debug,它就可以工作了......Api 仍处于调试状态。谢谢。
0赞 Ali Hemati 11/9/2023
我们非常欢迎您:)