我将Moq用于单元测试。要测试内部接口(interface),我必须向DynamicProxyGenAssembly2程序集声明InternalsVisibleTo属性。
我们对测试进行混淆处理,这很有用,因为使用这种方法可能会发现混淆问题。由DynamicProxyGenAssembly2程序集引起的,我的组件没有被混淆。
因此,我需要知道什么是DynamicProxyGenAssembly2程序集?我在磁盘上的任何地方都找不到它。是将其编译到moq.dll中还是在运行时生成?也许如果我知道该程序集是什么,我们就可以找到解决问题的方法。有人遇到过同样的问题吗?
请不要建议我们需要运行我们的测试。在这一点上这是没有选择的。
编辑
DynamicProxyGenAssembly2在运行时生成。为了满足Dotfuscator的要求,在Moq旁边放了一个空的dll。此外,我们还必须修改CaSTLe.Core dll以使用您的公钥。我们遇到的最后一个问题是here。这样,我们就可以毫无问题地进行所有混淆测试。
问候,伊格德拉西尔。
最佳答案
DynamicProxyGenAssembly2是由使用诸如Moq或NSubsitute之类的CaSTLeProxy的模拟系统构建的临时程序集。它是在需要模拟时生成的,并在测试完成后丢弃。
至于Expose Internals方法,有一种RhinoMocks解决方案可以以最少的更改适用于您的最小起订量:
http://ayende.com/Wiki/Rhino+Mocks+-+Internal+Methods.ashx?AspxAutoDetectCookieSupport=1