Par exemple cet article introduit.
Quel est l'avantage?
L'analyse statique semble cool, mais en même temps, il permettrait d'éviter la possibilité de passer la valeur null comme paramètre dans l'unité de test. (si vous avez suivi l'exemple dans l'article que c'est)
Alors que sur le sujet des tests unitaires - compte tenu de la façon dont les choses sont maintenant, il y a sûrement aucun point pour les contrats de code si vous avez déjà la pratique de tests automatisés?
Mise à jour
Après avoir joué avec des Contrats de Code, je suis un peu déçu. Par exemple, sur la base du code de la accepté de répondre:
public double CalculateTotal(Order order)
{
Contract.Requires(order != null);
Contract.Ensures(Contract.Result<double>() >= 0);
return 2.0;
}
Pour les tests unitaires, vous toujours avoir à écrire des tests pour s'assurer que nul ne peut être adopté, et le résultat est supérieur ou égal à zéro si les contrats sont de la logique métier. En d'autres termes, si j'étais à supprimer le premier contrat, pas de tests allait se briser, si je n'avais pas spécialement eu un test de cette fonctionnalité. Ceci est basé sur la non utilisation de l'analyse statique intégré dans le meilleur (ultimate etc...) les éditions de Visual Studio mais.
Essentiellement, ils se résument toutes à une autre façon de l'écriture traditionnelle si les déclarations. Mon expérience fait à l'aide de TDD, avec des Contrats de Code montre pourquoi et comment je suis allé à ce sujet.