簡體   English   中英

對ASP.NET Core中的內部類進行單元測試

[英]Unit test an internal class in ASP.NET Core

我想在ASP.NET Core項目中對具有internal保護級別的類進行單元測試。 我已將AssemblyInfo.cs文件添加到被測項目的屬性中:

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

[assembly: InternalsVisibleTo("xxx.xxx.xxxTests")]

但是,當我在測試中稱呼它為:

mockApplicationBuilder.Verify(y => y.UseMiddleware<HttpExceptionMiddleware>());

我仍然得到

由於其保護級別,無法訪問HttpExceptionMiddleware

為什么我的AssemblyInfo屬性不起作用?

我的設置是,我有一個包含2個文件夾(src和tests)的解決方案,並且這些文件夾分別在該文件夾的根目錄中包含src項目和test項目。 AssemblyInfo.cs文件位於src項目的屬性中。 我是否需要在assemblyInfo.cs屬性中指定測試項目的完整路徑?

我的測試項目中也有AssemblyInfo.cs ,盡管我認為這無關緊要。

在不解決您的解決方案的情況下,我只能提供建議

  • 驗證您的ASP項目是否在測試項目中被引用,該項目應該是或您有其他問題,並且最有可能作為項目參考
  • 驗證您的測試項目程序集名稱,並且InternalsVisibleTo包含標准程序集名稱
  • 驗證HttpExceptionMiddleware實際上是否標記為內部
  • 清潔並確認清潔,然后重新構建解決方案。

一個可能的答案是AssemblyInfo.cs文件是自動生成的(因此會覆蓋或忽略您的文件)。 非常猜測。 也可以看看:

等效於dotnet core / csproj中的AssemblyInfo

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM