我使用Moq进行单元测试。要测试内部接口,我必须将InternalsVisibleTo属性声明为DynamicProxyGenAssembly2程序集。
我们运行我们的测试模糊,这很有用,因为我们可以通过这种方法找到一些混淆问题。由DynamicProxyGenAssembly2程序集引起,我的组件不会被混淆。
因此,我需要知道DynamicProxyGenAssembly2程序集是什么?我在磁盘上的任何地方都找不到它。它是编译成moq.dll还是在运行时生成?也许如果我知道这个集会我会找到解决问题的方法。有人遇到过同样的问题吗?
请不要建议我们需要进行未经过混淆的测试。在这一点上,这是没有选择。
编辑
DynamicProxyGenAssembly2在运行时生成。为了满足Dotfuscator,在Moq旁边放了一个空的dll。此外,我们必须修改Castle.Core dll以使用您的公钥。我们遇到的最后一个问题是here。有了这个,我们可以毫无问题地运行我们所有的测试。
此致,Yggdrasil。
DynamicProxyGenAssembly2是一个临时程序集,由使用CastleProxy的模拟系统构建,如Moq或NSubsitute。它是在需要模拟时生成的,并在测试完成后进行处理。
至于Expose Internals方法,有一个RhinoMocks解决方案适用于你的Moq,只需要很小的改动:
http://ayende.com/Wiki/Rhino+Mocks+-+Internal+Methods.ashx?AspxAutoDetectCookieSupport=1