我想在 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/