2009-06-11 11 views
3

Existe-t-il un bon moyen d'utiliser l'attribut conditionnel dans le contexte du test?C#: Utilisation de l'attribut conditionnel pour les tests

Mes pensées étaient que si vous pouvez le faire:

[Conditional("Debug")] 
public void DebugMethod() 
{ 
    //... 
} 

Peut-être que vous pourriez avoir une certaine utilité pour: (?)

[Conditional("Test")] 
public void TestableMethod() 
{ 
    //... 
} 

Répondre

4

Je ne vois pas une utilisation quand il y a une meilleure alternative: Projets de test.

Utilisez NUnit ou MSTest pour réaliser cette fonctionnalité d'une manière plus gracieuse.

+0

Détails s'il vous plaît. C'était juste un remue-méninges. Je l'ai juste jeté dehors, je n'en ai aucune idée. –

+0

Il existe des cadres de test qui traitent cela automatiquement. Ils fournissent certains attributs que vous utiliserez pour décorer vos classes. Cela pourrait expliquer mieux: http://www.nunit.org/index.php –

1

J'accepte la réponse de Mehrdad - Je voulais juste donner plus de contexte lorsque vous peut utiliser ces attributs:

Des choses comme [Conditional] sont plus généralement utilisés pour contrôler des choses comme l'exploitation forestière/traçage, ou des interactions avec un débogueur en cours d'exécution; où il est logique que les appels soient au milieu de votre code normal, mais que vous ne voulez pas dans certaines constructions (et #if ... etc est juste si laid et facile à oublier).

1

Si le code de test ne fait pas partie du produit, il ne doit pas figurer dans la base de code du produit. J'ai vu des projets essayant d'inclure des tests unitaires dans le même projet que les objets testés, et en utilisant les instructions #if pour les inclure seulement dans les versions de débogage pour les regretter plus tard.

Un problème évident serait que le projet d'application obtienne une référence à la structure de test unitaire. Même si vous n'avez pas besoin d'expédier ce framework dans le cadre de votre produit (si vous pouvez garantir qu'aucun code dans la version release ne le référencera), cela sent toujours un peu drôle pour moi.

Laisser le code de test être le code de test et le code de production être le code de production, et laisser le code de production n'ont aucune idée à ce sujet.

1

L'autre problème est que vous pouvez exécuter vos tests unitaires sur vos versions de version. (Nous le faisons certainement).

Questions connexes