小编Eld*_*dar的帖子

单元测试添加/获取方法对

我是一名用C#编写的.Net开发人员,我被分配到一个项目,其经理希望它经过彻底的单元测试,主要是强调隔离,这样一个逻辑错误理想地失败了一个测试,并且测试之间没有依赖关系.

今天我们正在讨论测试模式,并出现了以下问题:

假设我们有一个名为的对象MyHashTable,它实现了:

void Add(string key, string value);

string GetValue(string key);
Run Code Online (Sandbox Code Playgroud)

我们想要独立地测试每个方法.当然,主要的问题是,从逻辑上讲,我们无法获得我们从未添加过的内容,而且我们无法在没有获取的情况下验证添加的内容.我们已经听过并读过关于存根/模拟和其他可能有助于克服这些问题的技术,但无法确定哪种解决方案最具可读性和可维护性.

因此,我要求提供建议/想法如何单独测试这些方法,如果可以,请为您的建议包含优缺点.谢谢!

c# unit-testing

6
推荐指数
1
解决办法
2000
查看次数

为什么AutoMoqCustomization嵌套依赖项不尊重冻结的模拟?

我已经尝试使用它AutoMoqCustomization来自动模拟具有嵌套依赖关系的对象图,结果不像我预期的那样.下面是失败的测试代码(使用FluentAssertions进行断言).在运行测试时,IDependant注入的模型与之前冻结的模拟模型Dependant2不同IObject.这是嘲笑冻结的错误,还是我不能正确理解如何使用它?

注意:我读到有关使用的内容AutoConfiguredMoqCustomization,但是当它有一个IDependant属性IObject Obj { get; }时它不起作用但是当它有一个方法时它可以工作IObject GetObj();,这是预期的行为AutoConfiguredMoqCustomization吗?

失败的测试代码:

[TestClass]
public class MyTestClass
{
     [TestMethod]
     public void Test()
     {
         var fixture = new Fixture().Customize(new AutoMoqCustomization());

         var objMock = fixture.Freeze<Mock<IObject>>();
         var sut = fixture.Create<Dependant2>();

         sut.Obj.Should().BeSameAs(objMock);
     }
}

public interface IObject { }

public interface IDependant { IObject Obj { get; } }

public class MyObject : IObject { }

public class Dependant2 …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing moq autofixture

5
推荐指数
0
解决办法
331
查看次数

标签 统计

c# ×2

unit-testing ×2

autofixture ×1

moq ×1