21

我使用 Moq 进行单元测试。要测试内部接口,我必须将 InternalsVisibleTo 属性声明给 DynamicProxyGenAssembly2 程序集。

我们运行我们的混淆测试,这很有用,因为我们可以通过这种方法发现一些混淆问题。由于 DynamicProxyGenAssembly2 程序集,我的组件没有被混淆。

因此我需要知道什么是 DynamicProxyGenAssembly2 程序集?我在磁盘上的任何地方都找不到它。它是编译到 moq.dll 中还是在运行时生成?也许如果我知道这个程序集我可以找到解决我的问题的方法。有人遇到过同样的问题吗?

请不要建议我们需要不加掩饰地运行我们的测试。在这一点上,这是没有选择的。

编辑

DynamicProxyGenAssembly2 在运行时生成。为了满足 Dotfuscator 的要求,在 Moq 旁边放了一个空的 dll。此外,我们必须修改 Castle.Core dll 以使用您的公钥。我们遇到的最后一个问题在这里得到了解答。有了这个,我们可以毫无问题地运行我们所有的混淆测试。

问候,Yggdrasil。

4

1 回答 1

26

DynamicProxyGenAssembly2 是一个临时程序集,由使用 CastleProxy(如 Moq 或 NSubsitute)的模拟系统构建。它在需要模拟时生成,并在测试完成后处理掉。

至于 Expose Internals 方法,有一个 RhinoMocks 解决方案可以为您的 Moq 提供最小的更改:

http://ayende.com/Wiki/Rhino+Mocks+-+Internal+Methods.ashx?AspxAutoDetectCookieSupport=1

于 2013-06-18T22:13:22.563 回答