我遇到了Fakes Framework和内部类的问题。 我刚刚开始使用这里的建议:How to mock/isolate internal classes in VS 2012 with Fakes Framework shims?
但是,我仍然没有看到内部课程。
我有这个解决方案: ACQTool(类库项目) ACQTool.UnitTests(测试项目)
在ACQTool命名空间中有ACQTool.Utils内部类。
在ACQTool / AssemblyInfo.cs中我添加了这些行:
[assembly: InternalsVisibleTo("ACQTool.UnitTests, PublicKey=57ad8399-13fd-4d4d-90fd-c521c2164d25")]
[assembly: InternalsVisibleTo("ACQTool.Fakes, PublicKey=0024..47bc")]
[assembly: InternalsVisibleTo("Microsoft.QualityTools.Testing.Fakes, PublicKey=0024..47bc")]
构建之后,我可以在测试类中使用ACQTool.Utils,但不存在ACQTool.Fakes.ShimUtils / StubUtils。 请帮帮我。
答案 0 :(得分:0)
可能您应该粘贴sn.exe工具生成的公钥。 通常它存储在以下地方:
"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\sn.exe"
从命令行调用它:
sn.exe -p SomeName.snk SomeName.PublicKey
sn.exe -tp SomeName.PublicKey
并将输出粘贴到“InternalsVisibleTo”公钥参数。
我错过的那个msdn页面的重要说明:Fakes框架使用相同的密钥对所有生成的程序集进行签名,因此签名时的公钥通常应该是
PublicKey=0024000004800000940000000602000000240000525341310004000001000100e92decb949446f688ab9f6973436c535bf50acd1fd580495aae3f875aa4e4f663ca77908c63b7f0996977cb98fcfdb35e05aa2c842002703cad835473caac5ef14107e3a7fae01120a96558785f48319f66daabc862872b2c53f5ac11fa335c0165e202b4c011334c7bc8f4c4e570cf255190f4e3e2cbc9137ca57cb687947bc
答案 1 :(得分:0)
有点奇怪我只是复制了你的问题,而且肯定它起初并没有在假装配中产生内部结构。我按照以下步骤操作,它甚至开始为其他命名空间工作:
Utils
下添加公共类。 我从Utils
命名空间删除了所有内容并添加了新的内部类,从那时起它运行正常。
这只是生成包含内部的命名空间的一种解决方法。