2011-06-12 1 views
1

私はこのクラスでテストを作成する必要があります。誰かがそれをする方法を手伝ってもらえますか?テストハーネスを作成する(ユニットテスト)

public class Db { 
private System.Data.SqlClient.SqlConnection myConn; 

public Db(string connString) 
{ 
    myConn = new System.Data.SqlClient.SqlConnection(connString); 
} 

public bool Connected 
{ 
    get { return (myConn.State == ConnectionState.Open); } 
} 

public void Connect() 
{ 
    myConn.Open(); 
} 

public void Disconnect() 
{ 
    myConn.Close(); 
} 
} 

はい、接続文字列をコンストラクタパラメータとして渡すことができます。

よろしく

ヤフー

+0

現在、そのクラスにはあまり動作がありません。メソッドを追加する予定がない場合は、Dbクラスのインタフェースを抽出し、IDbインタフェースを作成することを検討してください。それを他のクラスに注入してテストしてください。ただし、クラスDbに機能を追加する予定がある場合は、テストの対象にすることをお勧めします。 – TrueWill

答えて

1

あなたの唯一の依存(SqlConnectionオブジェクト)は、注射ではないので、最初に行うことは、少なくともにあるSqlConnectionオブジェクトをパラメータとして渡すことができるように連鎖する貧乏人の依存性注入のコンストラクタを持っています。それ以外は、このクラスはコネクションのラッパーとしてはほとんど機能しないことがわかります。私がするIDbConnectionとして、おそらく抽象的接続でしょうし、必要に応じて接続されたメソッドのテストのようなものになりますように、それを嘲笑:

IDbConnection conn = mockery.CreateMock<IDbConnection>(); 
Expect.Call(connection.State).Return(ConnectionState.Open); 

mockery.ReplayAll(); 

Assert.IsTrue(db.Connected); 

mockery.VerifyAll(); 

接続/切断は、同様の方法で嘲笑することができます。

+0

あなたはMoq、Rhino Mocks、または新しい分離フレームワークの1つを見てみたいかもしれません。レコード/リプレイは好意を失った。 – TrueWill

関連する問題