标签: microsoft-fakes

模拟框架与MS Fakes框架

对NMock与VS 2011 Fakes Framework等Mock框架的差异感到有些困惑.通过MSDN,我理解的是Fakes允许你像RhinoMock或NMock一样模拟你的依赖,但是方法不同,Fakes生成代码来实现这个功能,但Mocks框架没有.那么我的理解是正确的吗?假货只是另一个模拟框架

unit-testing microsoft-fakes

92
推荐指数
4
解决办法
6万
查看次数

如何在.NET测试中传入一个模拟的HttpClient?

我有一个Microsoft.Net.Http用于检索一些Json数据的服务.大!

当然,我不希望我的单元测试击中实际的服务器(否则,这是一个集成测试).

这是我的服务ctor(使用依赖注入......)

public Foo(string name, HttpClient httpClient = null)
{
...
}
Run Code Online (Sandbox Code Playgroud)

我不知道我怎么可以......比如嘲笑这个.. MoqFakeItEasy.

我想确保当我的服务电话GetAsyncPostAsync..然后我可以伪造这些电话.

有什么建议我怎么做?

我希望 - 我不需要制作我自己的Wrapper ..因为这是废话:(微软不能对此进行疏忽,对吧?

(是的,它很容易制作包装..我之前已经完成了它们......但这是重点!)

.net c# mocking microsoft-fakes dotnet-httpclient

55
推荐指数
2
解决办法
2万
查看次数

如何在VS 2012 Professional RC中添加假货组件?

根据以下关于VS 2012和Microsoft Fakes Test Framework的两篇文章,我应该能够在我的测试项目的参考资料中右键单击一个程序集并选择"Add Fakes Assembly"来在Visual Studio 11中创建一个新的Microsoft Fakes Framework程序集但是我没有在VS 2012 RC Professional中找到它应该存在的上下文菜单项.我可能需要引用Microsoft.QualityTools.Testing.Fakes程序集,但我也无法在添加引用搜索中找到它.自beta以来所需的菜单是否已更改?我需要安装扩展程序吗?

如何在VS 2012 Professional RC中添加假货组件?

参考文章:

c# tdd microsoft-fakes visual-studio-2012

32
推荐指数
1
解决办法
3万
查看次数

带伪造的单元测试中的Visual Studio 2015 InvalidProgramException

我正在使用Visual Studio 2015 Enterprise RTM为使用Unity Container的项目编写单元测试.

我发现为Unity添加伪造程序集的简单行为,甚至实际上不使用伪造,足以生成此异常:

System.InvalidProgramException:公共语言运行时检测到无效程序.



请考虑以下步骤来重现:

  • 使用Visual Studio 2015 Enterprise RTM创建面向.NET 4.6的单元测试项目

  • 添加NuGet包"Unity"版本3.5.1404.0

  • 添加NuGet包"CommonServiceLocator"1.2.0版

  • 像这样写一个单元测试:

[TestClass]
public class UnitTest1 : IDisposable
{
    [TestMethod]
    public void TestMethod1()
    {
        new ResolvedArrayParameter<IDisposable>(new IDisposable[] {this});
    }

    void IDisposable.Dispose()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)
  • 验证测试通过

  • 右键单击Microsoft.Practices.Unity参考并选择"Add Fakes Assembly"

  • 重新运行测试

  • 观察以下显着的测试失败:

测试名称:TestMethod1
测试FullName:UnitTestProject11.UnitTest1.TestMethod1
测试源:c:\ temp\UnitTestProject11\UnitTestProject11\UnitTest1.cs:第12行
测试结果:失败
测试持续时间:0:00:00.0572447

结果StackTrace:

在Microsoft.Practices.Unity.ResolvedArrayParameter..ctor(类型arrayParameterType,Type elementType,Object [] elementValues)
,
位于UnitTestProject11.UnitTest1的Microsoft.Practices.Unity.ResolvedArrayParameter`1..ctor(Object [] elementValues). C:\ temp\UnitTestProject11\UnitTestProject11\UnitTest1.cs中的TestMethod1():第13行
结果消息:
测试方法UnitTestProject11.UnitTest1.TestMethod1引发异常:
System.InvalidProgramException:公共语言运行时检测到无效程序.



这个问题最显着的特点是显然假货甚至不需要直接出现在代码中就无法显示.

大量的小提琴显示,将测试项目重新定位到.NET 4.5"修复"了这个问题,这对我来说是一个非首发因素,因为我在几周后发布了另一个问题.

几乎所有的假货设置(代码合同等)都更难以解决问题.

关于这个问题的任何建议都将非常感谢.

c# unit-testing microsoft-fakes visual-studio-2015 .net-4.6

27
推荐指数
1
解决办法
1417
查看次数

MSB3270:处理器架构之间不匹配 - Fakes Framework

由于我在UnitTest中使用Fakes Framework,因此我收到以下MSBuild警告.

警告MSB3270:正在构建的项目的处理器体系结构"MSIL"与参考"DocumentServiceModel","x86"的处理器体系结构之间存在不匹配.这种不匹配可能会导致运行时故障.请考虑通过Configuration Manager更改项目的目标处理器体系结构,以便在项目和引用之间调整处理器体系结构,或者依赖于具有与项目的目标处理器体系结构相匹配的处理器体系结构的引用.[C:\ Projekte\XXX\XXX\XXX \源\测试\ UT\XXX.UnitTest\OBJ \调试\伪造品\ PPSM\f.csproj]

解决方案中所有项目的平台目标设置为x86.

我怎样才能摆脱这个构建警告?

UPDATE1:

我认为问题是,Fakes Framework创建了一个动态项目,平台目标为"任何CPU".

(C:\ Projekte\XXX\XXX\XXX \源\测试\ UT\XXX.UnitTest\OBJ \调试\伪造品\ PPSM\f.csproj)

这个动态项目引用了我的projekt中的程序集,它使用平台目标"x86"运行.

我不知道,如何将动态Fakes projekt改为"x86".

UPDATE2:

我创建了一个示例项目,并得到相同的警告:

Warning 1   There was a mismatch between the processor architecture of the project being built "MSIL" and the processor architecture of the reference "MSBErrorTest", "x86". This mismatch may cause runtime failures. Please consider changing the targeted processor architecture of your project through the Configuration Manager so as to align the processor architectures between your project …
Run Code Online (Sandbox Code Playgroud)

.net msbuild compiler-warnings microsoft-fakes

24
推荐指数
3
解决办法
6万
查看次数

我应该如何在.NET Core 1.1或更高版本下使用Mocking和Fakes?

我已经使用.NET Framework 4.X多年了,我刚刚切换到.NET Core.由于我想做TDD,我想使用模拟框架和微软假货.但是,我不清楚如何为.NET Core做到这一点,因为不支持经典解决方案.

有人能告诉我如何在.NET Core 1.1下使用Mocking和Fakes吗?

unit-testing mocking microsoft-fakes asp.net-core

24
推荐指数
1
解决办法
3117
查看次数

Microsoft.Fakes不会在正常的单元测试上下文中运行

我正在使用一个简单的概念证明Fakes nUnit测试:

  [Test]
  public void TestFakes()
  {
      using (var ctx = ShimsContext.Create())
      {
          System.Fakes.ShimDateTime.NowGet = () => { return new DateTime(2000, 1, 1); };

          Assert.That(DateTime.Now.Year, Is.EqualTo(2000));
      }
  }
Run Code Online (Sandbox Code Playgroud)

此测试在Visual Studio测试资源管理器中运行,但不在以下位置运行:

  • nUnit GUI
  • nUnit控制台
  • JetBrains测试跑步者(dotCover OR Resharper)
  • TestDriven.net测试运行器

在每个中,我收到以下错误:

Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException:无法从COR_PROFILER_PATH和COR_PROFILER环境变量解析探查器路径

当我反思这个程序集时,似乎它正在寻找仅限VS Ultimate的Intellitrace功能 - 我只安装了Premium.

有关如何解决此问题的任何建议(我们在构建服务器上使用nUnit runner,因此这是使用Fakes的阻止程序)

c# visual-studio microsoft-fakes

20
推荐指数
2
解决办法
9048
查看次数

如何使用Microsoft Fakes为基类获取填充程序?

class Parent{
   public string Name{ get; set; }
}

class Child :Parent{
   public string  address{ get; set; }
}

[TestClass]
class TestClass{
   [TestMethod]
   public void TestMethod()
   {
      var c = new Fakes.Child();
      c.addressGet = "foo"; // I can see that
      c.NameGet = "bar"; // This DOES NOT exists
   }
}
Run Code Online (Sandbox Code Playgroud)

如何在上面的代码示例中设置"名称"?

c# microsoft-fakes

18
推荐指数
2
解决办法
9287
查看次数

MS伪造单元测试在Visual Studio 2013 Update 4之后失败

我最近从Microsoft Visual Studio 2013 Update 3(高级版)升级到Microsoft Visual Studio 2013 Update 4(高级版),现在我的现有单元测试项目已停止编译.它失败并出现错误:

"Microsoft.QualityTools.Testing.Fakes.Stubs.StubBase`1"类型在未引用的程序集中定义.您必须添加对程序集'Microsoft.QualityTools.Testing.Fakes,Version = 12.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用

我们和很多其他人一样,在VS2013中引入了一个类似的问题,可以通过在FakesAssemblies文件夹中手动删除.messages文件(通过文件资源管理器或解决方案资源管理器,查看所有文件已启用)来解决.项目文件夹.然而,即使我删除了整个FakesAssemblies文件夹,这也无法解决问题.

对项目的引用(包括正确的版本是它们在项目中).我删除了引用并读取它并且它没有效果,它们仍然无法编译.

单元测试项目仍然使用Visual Studio 2013 Update 3编译并传递给其他同事机器.

使用MS假货的新项目单元测试项目也无法构建.

如此简短,卸载Update 4还有什么我可以尝试的吗?

如果不是,我将在Microsoft Connect上记录一个错误.

unit-testing microsoft-fakes visual-studio-2013

18
推荐指数
2
解决办法
2万
查看次数

Microsoft Fakes可以在Visual Studio 2010中使用吗?

我们有开发人员使用Visual Studio 2010专业版,有些人尝试使用Visual Studio 2012.两个版本之间的项目兼容性一直很好.

如果我们引入新的Fakes Framework进行单元测试,Visual Studio项目是否仍然与2010兼容?

visual-studio-2010 microsoft-fakes visual-studio-2012

17
推荐指数
1
解决办法
5246
查看次数