【问题标题】:Valid class hierarchy?有效的类层次结构?
【发布时间】:2019-11-02 00:22:12
【问题描述】:

以下类层次结构对 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-testing inheritance tdd associations


【解决方案1】:

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

The Rules of TDD by Uncle Bob

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

【讨论】:

  • 问题本身与层次结构有关。我的意思是这些层次结构在有效的 TDD 构造中是否可以接受。我需要 TDD 专家的建议,并且可以发现此结构中的设计错误。
  • 问题是我们不知道你想要完成什么。当您使用 TDD 编写应用程序时,至少,好的设计会失败。至少,这是我的经验。你写了哪些测试?为什么不将您的测试与一些业务用例一起发布并询问您是否正确处理它?
猜你喜欢
  • 1970-01-01
  • 2013-04-27
  • 2015-06-06
  • 1970-01-01
  • 1970-01-01
  • 2011-05-19
  • 2023-03-21
  • 2017-01-24
  • 1970-01-01
相关资源
最近更新 更多