InternalsVisibleTo不起作用
我插入行:
[assembly: InternalsVisibleTo("MyTests")]
在我的项目中testing( Properties/AssemblyInfo.cs
)其中MyTests
是unit testing项目的名称。 但由于某些原因,我仍然无法访问unit testing项目中的内部方法。
任何关于我在做什么的想法是错误的?
如果你的程序集使用强名称签名, 请看这个答案 。
否则,请检查您的testing程序集的名称是否为“MyTests.dll”(它不需要与项目名称匹配,但默认情况下是这样)。
让我们分解一下,因为我们很多人都经历过这种轻微的混淆。
大会A有你的内部class级。 大会B有你的unit testing。
您希望授予程序集B内部的可见性
您需要将InternalsVisibleTo程序集属性放在程序集A中,并授予对程序集B的访问权。
你仍然需要你的testing项目来引用你的主要项目。
这可以很容易忽略,如果你没有现有的testing代码,这可能看起来像InternalsVisibleTo不起作用。
在我的情况下,我正在编写一个接口。 由于接口只能指定公共属性,所以内部属性不在接口上。
确保你没有像我一样做同样的事情!
我变了:
Assert.IsNotNull((exportFileManager)?.ThumbnailFileExporter);
至:
Assert.IsNotNull((exportFileManager as ExportFileManager)?.ThumbnailFileExporter);