自动化构造函数中的属性赋值测试

时间:2015-12-11 15:50:09

标签: c# unit-testing reflection

在我的域层中,我创建了许多类似

的类
public class Route
{
    public Route(Location origin, Location destination)
    {
        this.Origin = origin;
        this.Destination = destination;
    }
    public Location Origin { get; }
    public Location Destination { get; }
}

现在我需要对这个构造函数进行单元测试

[Test]
public void PropertiesAreAssigned()
{
    var origin = new Location(...);
    var destination = new Location(...);
    var route = new Route(origin, destination);
    route.Origin.Should().Be(origin);
    route.Destination.Should().Be(destination);
}

我有很多类和测试彼此非常相似。我想要的是采用某种方法接受类型参数,然后对我进行所有测试,即

  • 实例化每个构造函数参数的变量(需要完整的依赖关系图)
  • 将这些变量传递给构造函数
  • 检查属性值是否已正确分配

我很确定我可以通过一些反思来做到这一点,但也许有一个现有的库可以做到这一点?欢迎进行更多测试,例如

  • 测试null参数会引发正确的异常
  • 测试Equals和GetHashCode是否正确实施

1 个答案:

答案 0 :(得分:0)

对于我来说,测试一个简单的构造函数,简单的访问器和变换器是一种不好的做法......它将被行为(有意图)测试覆盖。您测试实现细节的次数越少,您的测试就越强大并且不会发生变化。

具有复杂行为的测试构造函数可能很有用。但我经常试图在我的构造函数中没有任何复杂的行为^^