2009-09-09 7 views
1

J'ai une méthode qui utilise une instruction Assembly.LoadFrom (...) et renvoie les cultures supportées de cet assemblage satellite, donc comment pourrais-je écrire des tests unitaires pour ce type de méthodes. Ce que j'ai fait a été enveloppé dans cette méthode/logique statique pour renvoyer des cultures dans une autre classe et utiliser sa méthode d'instance. Est-ce la bonne approche?TDD - Comment écrire un cas de test pour une méthode en tant que Assembly.LoadFrom (...)

Répondre

1

Est-ce la situation?

aMethod(whatToLoad) { 
      // other stuff 

      x = Assembly.LoadFrom(whatToLoad); 

      // code using x 
    } 

Premier principe: Nous nous concentrons sur les tests aMethod(), les tests de Assembly.LoadFrom() est un problème distinct. Pendant que nous construisons des tests pour aMethod(), nous n'essayons pas de tester ses dépendances.

Alors, de quel type de tests pourrions-nous avoir besoin?

  1. que nous adoptons la bonne valeur pour
  2. whatToLoad
  3. que nous stockons correctement/utiliser la valeur renvoyée
  4. que nous traitons correctement les erreurs ou les exceptions lancées à partir Assembly.LoadFrom()

Il est plus facile à faire si le test peut fournir une implémentation Mock. Ensuite, nous pouvons tester 1 en vérifiant que le Mock a reçu la valeur attendue. Test 2 en retournant une valeur bien définie (ou pour tester plusieurs valeurs différentes) Testez 3 en générant des conditions d'erreur choisies.

Alors vous avez changé votre code à quelque chose comme ceci:

aMethod(loader, whatToLoad) { 
      // other code 

      x = loader.Load(whatToLoad); 

      // code using x 
    } 

Peut-être que l'on injecte chargé d'une autre manière, mais le point est que vous pouvez maintenant spécifier différents tests ma mise en place d'un loaoder approprié. Par exemple, pour le premier test. Donc, si c'est le genre de choses que vous faites alors oui, je dirais que vous activez le TDD.

Questions connexes