2010-10-25 6 views
2

Aujourd'hui, j'ai finalement commencé à écrire sérieusement des tests unitaires pour mon nouveau projet ASP.net MVC. Toutefois, certains tests unitaires ont continué à renvoyer pour chaque action d'un contrôleur:Automatisation des tests unitaires pour asp.net mvc

  • Effectuez un test pour savoir si le résultat ActionResult renvoyé n'est pas nul.
  • Effectuez un test pour savoir si l'action renvoie un résultat ActionResult valide si ModelState n'est pas valide.
  • Effectuez un test si le type de ActionResult correspond à un certain type (par exemple ViewResult ou RedirectResult).

Ces trois tests contenaient plus ou moins le même code pour chaque action. Puisque j'aime éviter le code en double, j'ai pensé à automatiser ces types de tests par défaut pour chaque action. J'ai fait des recherches rapides à ce sujet, mais je n'ai rien trouvé.

Alors:

  • est-automatisant chose à faire test par défaut?
  • Si oui, des scripts disponibles ou des personnes qui ont déjà fait quelque chose comme ça auparavant?
  • Si personne n'a fait quelque chose avant, des suggestions sur la façon d'aborder cela?

Merci pour les réponses!

Répondre

2

Je ne pense pas que des tests similaires pour les différents contrôleurs soient des codes 'dupliqués'. La logique de test doit être refactorisée pour pouvoir être réutilisée. Le code de test réutilisé pour tester différents contrôleurs n'est donc pas une duplication.

Avez-vous examiné les TestHelpers au sein de MvcContrib. Je pense que beaucoup de tests de type commun de contrôleur ont déjà été mis en œuvre. Il y a aussi d'autres aspects qui facilitent les tests. Cela a été dit, il peut être utilisé pour configurer vos tests plus facilement. Jetez un oeil à cette réponse concernant Unit Testing Overkill.

+0

Bons pointeurs dans la bonne direction. Évidemment pas l'idée que j'ai eue, mais MvcContrib et l'autre réponse sur le fait de ne pas avoir un code de test trop complexe, me donneront une idée de la façon d'aborder l'écriture des autres tests unitaires. Merci! –

+0

La solution la plus simple consiste peut-être à écrire des extraits dans Visual Studio pour écrire rapidement les tests par défaut. –

1

Première grande question tactique: "Quelle pile de tests unitaires utilisez-vous?" Certains [mstest] ne supportent pas l'héritage dans les tests, donc ce genre de chose est difficile. Pour ce qui est de le faire, j'ai généralement trouvé que cela avait du sens, mais avoir trop de code partagé dans les tests unitaires peut être une mauvaise chose - que se passe-t-il lorsque vos codes d'essai deviennent si complexes que vous avez besoin tests pour le code de test?

+0

Bon commentaire, merci! N'a pas pensé à un code de test unitaire trop complexe. En ce moment, j'utilise en effet mstest. –

+0

Eh bien, mstest est votre premier problème ici :) –