c# - 对 ASP.NET Core 中的内部类进行单元测试

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

我想在 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 is inaccessible due to its protection level

为什么我的 AssemblyInfo 属性不起作用?

我的设置是我有一个包含 2 个文件夹(src 和测试)的解决方案,这些文件夹分别在文件夹的根目录中有 src 项目和测试项目。 AssemblyInfo.cs 文件在我的 src 项目的属性中。我是否需要在 assemblyInfo.cs 属性中指定测试项目的完整路径?

我的测试项目中也有一个 AssemblyInfo.cs,尽管我认为这无关紧要。

最佳答案

没有深入研究您的解决方案,我只能提供建议

  • 验证您的 ASP 项目在您的测试项目中被引用,这是应该的,否则您会遇到其他问题,并且很可能作为项目引用
  • 验证您的测试项目程序集名称以及 InternalsVisibleTo 是否包含完全限定的程序集名称
  • 验证 HttpExceptionMiddleware 实际上被标记为内部
  • 清洁并验证清洁,然后重建您的解决方案。

关于c# - 对 ASP.NET Core 中的内部类进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42493414/

相关文章:

javascript - 在可重用的 Razor 类库中包含静态文件

c# - 如何调试使用自定义 .NET Core 2 主机加载的程序集?

c# - 在 NuGet nuspec 中使用 "dotnet"或 ".NETPlatform5.0"?

c# - Form1 Load Event 仅执行第一条语句

c# - 使用 Entity Framework 的 Oracle 查询速度慢得离谱

sql-server - 具有 Azure SQL 托管标识的 Entity Framework Core 导致用户“NT AUTHORITY\ANONYMOUS LOGON 登录失败”

angular - 如何将视频文件作为 Angular block 上传(版本 8)

c# - 更改端点地址后如何修复 'Unrecognized Message Version'

c# - winforms设计器: source compiles and runs but designer shows errorscreen

c# - for 循环内的异步 HTTP 请求,无需同时等待异步操作