2009-05-22 3 views
0

私は今、クラスを持っています。このクラスには、タイマーによって実行されるループ上で特定のタスクを実行する15以上のプライベートメソッドがあります。これらのメソッドの中にはデータベースを呼び出すものと、そうでないものがあります。テストを実行するためのメソッドの整理 - C#

質問はどのように私はreposまたはプロセスを実行することができますので、私はクラスをセットアップできるようにこれらを整理することができますか?

これは私が今持っているものの簡略版です。

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. 
    } 
} 

答えて

0

私はあなたの質問を理解していれば、正しく、これはあなたがオブジェクトマネージャはその仕事をするために依存供給dependency injectionの必要性のように聞こえます。それらは実際のオブジェクト(実際のデータベース接続)か、まるで同じように動作する擬似オブジェクトです。

質問を正しく理解していますか?

+0

うん...私はしないように、それを構造化するためにどのように....だけでわからないと思いますそれをテストするためにdbにヒットする必要があります。 – Schotime

1

各Db操作はCRUD操作のいずれかで終了します。 、

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

そしてCastle WindsorのようなDIフレームワークを使用して依存性注入を使用してデータベースのリストを注入:だから、あなたは、このような何かに、抽象他の言葉であなたのDatabaseクラスから自分のデータアクセス層をするIDatabaseを出して抽出することができますSpring.NETなどのいずれかあなたのManagerクラス

希望にセッターまたはCTOR注射によって、これは理にかなって... :)

+0

私はDB側の理解度が高いので他のメソッドを使用しているので、ITaskRunnerを使用してctorに渡し、ログが必要な場合は、ログのインスタンスもTaskRunnerに渡す必要があります。マネージャー?? – Schotime

関連する問題