我在.NET 4.5(而不是4.6)类库中有一个接口,
public interface IBrokenFakeInterface
{
Claim WhyWontItGenerateFakeOfThisInterface();
}
在我的单元测试项目(MSTest)中,当我为包含此接口的相应程序集添加了Fakes时,我收到编译器警告,指出它无法生成存根。
警告:无法为ClassLibrary1.IBrokenFakeInterface生成存根: 方法System.Security.Claims.Claim ClassLibrary1.IBrokenFakeInterface.WhyWontItGenerateFakeOfThisInterface() unstubbable:方法是抽象的,不能被存根,类型 System.Security.Claims.Claim在目标框架中不可用 版。 ClassLibrary1Tests C:\ Users \ jacobsonba \ Documents \ Visual 工作室 2015 \ Projects_tempFakeFiguringOut \ ClassLibrary1Tests \伪造品\ ClassLibrary1.fakes
虽然这只是编译器警告,但当单元测试项目依赖于StubIBrokenFakeInterface时会导致编译器错误,因为伪造生成器不会创建Stub具体类型。
有谁知道这个错误的原因和解决方案? 将项目更改为.NET 4.6可以解决它,但对我们来说这对于这些项目来说不是一个合理的选择。完全相同的代码在VS2013中编译得很好;实际上,如果用VS2013编译,然后在VS2015中打开解决方案,它将继续工作,直到Fakes组件重新生成。所以它显然是VS2015正在使用的假发电机的一个问题。