Visual studio 2012 vs 2012:世界杯
我正试图在VS 2012 ultimate中制作一个垫片,如MSDN站点中所述:Visual studio 2012 vs 2012:世界杯,visual-studio-2012,shim,microsoft-fakes,Visual Studio 2012,Shim,Microsoft Fakes,我正试图在VS 2012 ultimate中制作一个垫片,如MSDN站点中所述: [TestClass] 公共类TestClass1 { [测试方法] 公共无效测试当前年份() { int fixed year=2000; 使用(ShimsContext.Create()) { //安排: //迂回日期时间。现在返回固定日期: System.Fakes.ShimDateTime.NowGet= () => {返回新的日期时间(fixedYear,1,1);}; //实例化正在测试的组件: va
[TestClass]
公共类TestClass1
{
[测试方法]
公共无效测试当前年份()
{
int fixed year=2000;
使用(ShimsContext.Create())
{
//安排:
//迂回日期时间。现在返回固定日期:
System.Fakes.ShimDateTime.NowGet=
() =>
{返回新的日期时间(fixedYear,1,1);};
//实例化正在测试的组件:
var componentUnderTest=新的MyComponent();
//行为:
int year=componentUnderTest.GetTheCurrentYear();
//断言:
//如果组件正在工作,则始终如此:
断言。等于(固定年份,年份);
}
}
}
看
但当我编译我的测试项目时,我在输出中得到了一个概念:
警告:无法生成某些赝品。有关完整的详细信息,请将此文件中Fakes元素的诊断属性设置为“true”,然后重新生成项目
如何解决此警告?我已经单独解决了 在Property中是.NETFramework 4.0
更改为4.5解决问题。Visual Studio 2012更新1改进了Fakes中的代码生成,以简化代码生成问题的疑难解答。每当无法为特定类型生成存根或垫片时,Fakes现在可以生成一条警告消息—您可以在Visual Studio的错误列表窗口中看到这一点 但是,为了防止大型程序集(如系统)的警告数量过多,Fakes在默认情况下会生成一个警告。通过将.Fakes文件中的
Fakes
XML元素的Diagnostic
属性设置为“true”或“1”并重建项目,可以查看警告消息的完整列表。(有关示例,请参见下面的第一行代码。)
要解决此警告,请更改.Fakes文件以仅生成测试中所需的存根和垫片。细节
可用选项的完整列表
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="true">
<Assembly Name="System" Version="4.0.0.0"/>
<StubGeneration Disable="true" />
<ShimGeneration>
<Clear/>
<Add FullName="System.DateTime!"/>
</ShimGeneration>
</Fakes>
尝试删除那些.Fakes文件。 我无意中删除了它们并进行了编译,警告也消失了。
我不确定影响是什么,但一切似乎都很顺利。我认为这会导致编译器重新编译伪造文件,只要有一个版本。在哪篇MSDN文章中描述过?我们这里没有足够的信息来猜测答案。现在回滚您-1在单元测试项目中更改目标.NET framework版本时,可以减少遇到Fakes不支持的类型的机会,但它不会直接消除此警告消息。请解释一下“属性中的.NET framework 4.0”是什么意思?项目属性。我用的是.NET4.0。但是4.5needed@OlegSych答案应在此处标记为正确答案-他的回答比当前标记为答案的内容更与问题相关。是否有方法抑制警告消息?我将Diagnostic设置为false,将Verbosity设置为critical,但仍收到一些警告,表示无法生成某些赝品。是的。使用本答案中描述的方法仅生成所需的存根和垫片类型。不要指定不能被存根或填充的类型。嗨!我在尝试仅添加特定垫片或短棒时遇到一些问题,visual studio中的重建/清理选项不会删除预编译的Fakes程序集,因此,如果有人在执行此操作时遇到问题,请记住手动删除文件夹FakesAssembly。是否有任何方法可以抑制diagnostic=false时生成的“单一警告”。列出需要或将要删除的项目是不可行的。难道我们不能禁止所有关于伪造的警告吗?如果你删除了.fakes文件,你就不能进行伪造了。这将完全违背目的。