2011-06-12 7 views
1

Je dois créer un test sur cette classe. Quelqu'un peut-il aider à faire cela?créer un faisceau de test (test unitaire)

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(); 
} 
} 

Oui, la chaîne de connexion peut être transmise en tant que paramètre constructeur.

Cordialement

Yahoo

+0

Actuellement, il n'y a pas beaucoup de comportement sur cette classe. Si vous n'envisagez pas d'ajouter d'autres méthodes, vous pouvez envisager d'utiliser Extract Interface sur la classe Db et créer une interface IDb. Injectez cela dans d'autres classes et testez-les. Si vous envisagez d'ajouter des fonctionnalités à la classe Db, vous souhaiterez probablement le tester. – TrueWill

Répondre

1

Votre seule dépendance (SqlConnection) n'est pas injectable, alors première chose à faire est de atleast avoir dépendance constructeur d'injection Poor Man enchaînant permettant SqlConnection à passer en tant que paramètre. A part cela, je vois que cette classe fait très peu mais agit comme un wrapper pour la connexion. Je voudrais peut-être abstraite la connexion comme IDbConnection, et il se moquer si nécessaire, comme le test pour la méthode Connected serait quelque chose comme:

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

mockery.ReplayAll(); 

Assert.IsTrue(db.Connected); 

mockery.VerifyAll(); 

connexion/déconnexion peut être moquée de la même façon.

+0

vous pouvez jeter un oeil à Moq, Rhino Mocks, ou l'un des plus récents cadres d'isolement. Record/Replay est tombé en disgrâce. – TrueWill