我已经基于.Net Core 2
创建了一个测试项目,并编写了一些NUnit
测试用例。安装了必要的NuGet
软件包,即NUnit3TestAdapter
后,我能够在“测试资源管理器”中查看所有测试用例,并能够执行这些测试用例。现在,当我查看项目目录时,我发现它正在创建“obj”文件夹和一些json文件。所以我试图通过修改“.csproj”文件来改变“obj”文件夹的路径。我在参数“BaseIntermediateOutputPath”中提供了一些不同的路径,这样,我就可以摆脱“obj”文件夹了。提供不同路径的原因是,我想将json文件与源代码分开。
但是,在修改之后我无法从Test Explorer中看到或执行任何测试用例。
这是微软的错误吗?
是否所有包都依赖于“obj”文件夹?
P.S。 我正在为我的测试项目使用“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>
答案 0 :(得分:1)
当.NET Core项目构建时,它们不会将所有引用的文件复制到bin文件夹中。将Microsoft.NET.Test.Sdk
添加到测试项目时,其中之一就是添加AssemblyResolve
event handler,从searchDirectories
列表中加载其他相关程序集。
BaseIntermediateOutputPath
无法正常工作reported against the VSTest project并且是MSBuild的问题。 workaround is noted in the dotnet sdk repository。。因此,您需要在Sdk
中使用csproj
导入,而不是Sdk
元素上的Project
属性。
<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>