Nunit 无法在文本资源管理器中查看基于.net core 2的测试项目的测试用例

Nunit 无法在文本资源管理器中查看基于.net core 2的测试项目的测试用例,nunit,visual-studio-2017,nsubstitute,asp.net-core-2.0,.net-core-2.0,Nunit,Visual Studio 2017,Nsubstitute,Asp.net Core 2.0,.net Core 2.0,我创建了一个基于.NETCore2的测试项目,并编写了一些NUnit测试用例。在安装了必要的NuGet包(即NUnit3TestAdapter)之后,我能够在测试资源管理器中查看所有测试用例,并能够执行这些测试用例。现在,当我查看项目目录时,我发现它正在创建obj文件夹和一些json文件。所以我试图通过修改.csproj文件来更改obj文件夹的路径。我在参数BaseIntermediateOutputPath中提供了一些不同的路径,这样,我就能够摆脱obj文件夹。提供不同路径的原因是,我希望将j

我创建了一个基于.NETCore2的测试项目,并编写了一些NUnit测试用例。在安装了必要的NuGet包(即NUnit3TestAdapter)之后,我能够在测试资源管理器中查看所有测试用例,并能够执行这些测试用例。现在,当我查看项目目录时,我发现它正在创建obj文件夹和一些json文件。所以我试图通过修改.csproj文件来更改obj文件夹的路径。我在参数BaseIntermediateOutputPath中提供了一些不同的路径,这样,我就能够摆脱obj文件夹。提供不同路径的原因是,我希望将json文件与源代码分开。 但是,在修改后,我无法从测试资源管理器中查看或执行任何测试用例。 这是微软的错误吗? 是否有任何包依赖于obj文件夹

附言。 我正在为我的测试项目使用NUnit和NSubstitute包

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

  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <OutputPath>..\..\build\$(Configuration)\UnitTests\</OutputPath>
    <BaseIntermediateOutputPath>..\..\work\$(MSBuildProjectName)\</BaseIntermediateOutputPath>
  </PropertyGroup>
  <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />

  <ItemGroup>
    <PackageReference Include="Castle.Core" Version="4.1.1" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
    <PackageReference Include="NSubstitute" Version="2.0.3" />
    <PackageReference Include="NUnit" Version="3.8.1" />
    <PackageReference Include="NUnit3TestAdapter" Version="3.8.0" />
  </ItemGroup>

  <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
  <ItemGroup>
    <ProjectReference Include="..\UtilityLibrary\UtilityLibrary.csproj" />
  </ItemGroup>

</Project>

当.NET核心项目生成时,它们不会将所有引用的文件复制到bin文件夹中。将Microsoft.NET.Test.Sdk添加到测试项目时,它所做的一件事是添加一个AssemblyResolve,从SearchDirectory列表中加载其他依赖程序集

BaseMediateOutputPath不工作,并且是MSBuild的一个问题。这个因此,您需要在csproj中使用Sdk导入,而不是在项目元素上使用Sdk属性


在编译过程中使用obj文件夹。绝对没有理由移动它,正如您所看到的,它可能会导致工具出现问题。作为一名医生,我必须给你我的官方意见,你应该停止用锤子砸自己的头。嗨,威尔,实际上我能够为正常项目提供BaseMediateOutput路径,但不能为测试项目提供。它是否依赖于我正在使用的NuGet包。在我的组织中,通常将相关文件保存在单独的目录中,因此我希望将所有与obj相关的文件保存在单独的目录中,而不是将obj文件夹保存在源目录中。你好,Rob,这个解决方案我也尝试过,但似乎对我不起作用。我在原始问题中添加了我的csproj文件。在项目元素的第一行,您仍然有SDK属性。你试过删除它吗?明白了,从项目中删除SDK属性有效。谢谢你指出这一点。
<Project>
  <PropertyGroup>
    <BaseIntermediateOutputPath>obj\XXX\</BaseIntermediateOutputPath>    
  </PropertyGroup>
  <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />

  <!-- Body of project -->

  <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
</Project>