首页 > 解决方案 > 有效的类层次结构?

问题描述

以下类层次结构对 TDD 有效吗?我有两个相关的类层次结构,我需要在每个创建者中使用一种类型的 Info 对象。您是否知道更好地做到这一点的常见模式(也许使用泛型)?这是可测试的吗?

namespace ClassTest
{
    interface IProjectInfo
    {
        void Info1();
        void Info2();
    }

    class ProjectAInfo : IProjectInfo
    {
        public ProjectAInfo(string projectAData)
        {
            ProjectAData = projectAData;
        }

        public string ProjectAData { get; private set; }

        public void Info1() { }
        public void Info2() { }
    }

    class ProjectBInfo : IProjectInfo
    {
        public ProjectBInfo(string projectBData)
        {
            ProjectBData = projectBData;
        }

        public string ProjectBData { get; private set; }

        public void Info1() { }
        public void Info2() { }
    }

    interface IProjectCreator
    {
        void Create1();
        void Create2();
    }

    class ProjectACreator : IProjectCreator
    {
        public ProjectACreator(ProjectAInfo projectAInfo)
        {
            ProjectAInfo = projectAInfo;
        }

        public ProjectAInfo ProjectAInfo { get; private set; }

        public void Create1() { }
        public void Create2() { }
    }

    class ProjectBCreator : IProjectCreator
    {
        public ProjectBCreator(ProjectBInfo projectBInfo)
        {
            ProjectBInfo = projectBInfo;
        }

        public ProjectBInfo ProjectBInfo { get; private set; }

        public void Create1() { }
        public void Create2() { }
    }
}

info 和 creator 类共享公共接口。创建者需要信息类进行操作。

谢谢!

标签: c#unit-testinginheritancetddassociations

解决方案


这不是 TDD。使用 TDD,目的是先编写测试。如果您先编写测试,那么该测试将产生一个类层次结构并且它是可测试的。为了更好地理解 TDD,请看一下:

鲍勃叔叔的 TDD 规则

如果您的问题只是:这是可测试的吗?是的,它是可测试的。


推荐阅读