代码之家  ›  专栏  ›  技术社区  ›  Schotime

测试的组织方法-C#

  •  0
  • Schotime  · 技术社区  · 17 年前

    我现在有一个类,在这个类中有15个左右的私有方法,它们在计时器运行的循环中执行某些任务。其中有些方法调用数据库,有些则不调用。

    问题是。。。我如何安排这些,以便我可以设置类,以便我可以伪造回购协议或执行流程??

    这是我现在的一个简化版本。

    public class Manager : IManager
    {
        System.Timers.Timer tm;
        private bool runningAsService;
        private List<Database> Databases = new List<Database>();
        private LogClass Log;
    
        public Manager(bool RunningAsService, LogClass log)
        {
            runningAsService = RunningAsService;
            Log = log;
    
            tm = new System.Timers.Timer(Settings.idle_time * 1000);
            tm.Elapsed += new System.Timers.ElapsedEventHandler(delegate { PerformDuties(); });
        }
    
        public void Start()
        {
            tm.Start();
            PerformDuties();
        }
    
        private PerformDuties()
        {
            //Call the other 10-15 private methods to perform all the tasks needed.
        }
    }
    
    2 回复  |  直到 17 年前
        1
  •  1
  •   abhilash    17 年前

    每个Db操作都将结束为CRUD操作之一。所以,您可以从数据库类中提取IDatabase,换句话说,提取数据访问层 某物 这样地:

    public interface IDatabase<T> 
    {
         T CreateItem();
         T ReadItem(Id id);
         bool UpdateItem(T item);
         bool DeleteItem(T item)
    }
    

    并使用依赖项注入和DI框架注入数据库列表,如 Castle Windsor , Spring.NET 等通过塞特或塞特注射到你的 Manager 班

    希望这有道理……)

        2
  •  0
  •   Colin Burnett    17 年前

    如果我正确理解你的问题,那么这听起来像是需要 dependency injection 提供对象管理器的位置取决于它的工作。它们可能是真实的对象(一个实际的数据库连接),也可能是一个与之类似的假对象。

    我对你的问题理解正确吗?