unit-testing – 单元测试工厂方法,它有一个具体类作为返回类型

所以我有一个工厂类,我试图找出单元测试应该做什么。从这 question我可以验证返回的接口是一个特定的具体类型,我会期望。

如果工厂返回具体类型(因为目前不需要使用接口),我应该检查什么?目前我做的事情如下:

[Test]
public void CreateSomeClassWithDependencies()
{
    // m_factory is instantiated in the SetUp method
    var someClass = m_factory.CreateSomeClassWithDependencies();

    Assert.IsNotNull(someClass);
}

这个问题是,Assert.IsNotNull似乎有点多余。

另外,我的工厂方法可能设置的特定类的依赖,如下所示:

public SomeClass CreateSomeClassWithDependencies()
{
    return new SomeClass(CreateADependency(),CreateAnotherDependency(),CreateAThirdDependency());
}

我想确保我的工厂方法正确设置所有这些依赖项。有没有其他方法来做这个,然后使那些依赖的公共/内部属性,然后我在单元测试中检查? (我不是修改测试主题以适应测试的大粉丝)

编辑:为了回应Robert Harvey的问题,我使用NUnit作为我的单元测试框架(但我不会认为它会产生太大的区别)

通常,创建可用于基于状态的测试的公共属性没有问题。是:这是您创建的代码,以启用测试场景,但它是否会伤害您的API?可以想象,其他客户端会发现相同的属性后来有用吗?

在测试特定的代码和测试驱动设计之间有一条细微的线。我们不应该引入没有其他潜力的代码来满足测试需求,但是它很好地引入遵循普遍接受的设计原则的新代码。我们让测试驱动我们的设计 – 这就是为什么我们称之为TDD

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...