.NET Core Web应用程序运行时,如何对其进行单元测试?

时间:2019-08-24 20:11:33

标签: c# asp.net-core .net-core

我有一个使用MyApp.Web在本地运行的.NET Core 2.2 Web应用程序dotnet run

我想使用MyApp.Web.Tests在项目dotnet test中同时运行单元测试,而不必停止正在运行的Web应用程序。

但是,我收到一条错误消息:

C:\Program Files\dotnet\sdk\2.2.401\Sdks\Microsoft.NET.Sdk.Razor\build\netstandard2.0\Sdk.Razor.CurrentVersion.targets(510,5): warning MSB3026: Could not copy "obj\Debug\netcoreapp2.2\MyApp.Web.Views.dll" to "<projectdir>\bin\Debug\netcoreapp2.2\MyApp.Web.Views.dll". Beginning retry 1 in 1000ms. The process cannot access the file '<projectdir>\bin\Debug\netcoreapp2.2\MyApp.Web.Views.dll' because it is being used by another process.

.NET Core为什么要锁定已编译的视图?有什么办法可以防止这种情况,以便我可以运行测试?

到目前为止,我发现的唯一解决方案是运行NCrunch,它可以在完全独立的位置复制和构建项目。但这需要我运行Visual Studio,而我并不总是想要这样做(而是使用Rider)。

1 个答案:

答案 0 :(得分:1)

<RazorCompileOnBuild>false</RazorCompileOnBuild>添加到Web项目.csproj将防止其锁定.Views.dll文件,并允许在运行时重建项目,而允许dotnet test该应用程序正在运行。