2010-06-07 4 views
4

Salut J'ai cherché d'autres articles, mais la plupart d'entre eux supposaient que les gens savaient ce qu'ils faisaient dans leurs tests unitaires, et franchement, je ne le fais pas. Je vois l'idée derrière les tests unitaires, et je suis en train de coder une application Silverlight pour l'instant en aveugle, et j'aimerais écrire des tests unitaires pour être sûr que je suis sur la bonne voie. J'aimerais pouvoir utiliser le modèle de projet de test d'unité argenté SL4 vs 2010, pour le garder simple et ne pas utiliser d'outils externes. Donc, ce dont j'ai besoin d'une réponse sont des questions comme:Test d'unité pour la première fois (en Silverlight)

quelles sont les méthodes de test unitaire? Quelles sont les différences entre les tests unitaires et les tests unitaires automatisés? Comment est-ce que je peux tester de manière significative dans silverlight? Que devrais-je savoir pendant les tests unitaires (en Silverlight)?

De même, devrais-je implémenter une sorte de modèle IRepository dans mon application silverlight pour faciliter les tests unitaires?

EDIT:

Je vais poster des liens utiles ici comme j'explore ce chemin:

mise en œuvre MVVM dans silverlight - http://community.infragistics.com/pixel8/media/p/91949.aspx

MIX10 MVVM talk - http://live.visitmix.com/MIX10/Sessions/EX14

Tests unitaires Ria apps - http://blogs.msdn.com/b/vijayu/archive/2009/06/08/unit-testing-business-logic-in-net-ria-services.aspx

Excellente ressource de PK: http://dotenetscribbles.blogspot.com/2009/12/unit-testing-dependency-injection-and.html

+0

+1. Bonne question pour ceux d'entre nous qui ne savent pas vraiment quoi faire avec les tests unitaires. –

Répondre

2

Je n'ai jamais utilisé modèle de projet d'essai silverlight unité. J'ai seulement utilisé Nunit pour faire des tests unitaires dans Silverlight. Donc, je vais laisser ça à quelqu'un d'autre pour répondre. En ce qui concerne vos autres questions:

Des tests unitaires devraient conduire votre conception. Vos tests unitaires sont les premiers utilisateurs de votre code. Votre code est basé sur certaines attentes et les tests unitaires vérifient que les attentes sont satisfaites. L'utilisation du modèle MVVM (comme vous utilisez Silverlight) facilite les tests unitaires. La chose la plus importante à retenir est que vous devez écrire du code testable. Et pour écrire du code testable, la chose la plus importante à retenir est d'injecter des dépendances. Par exemple, si votre code appelle la base de données. Vous, ne pouvez pas avoir un test unitaire qui appelle la base de données. Au lieu de cela, vous allez mocker votre couche d'accès aux données. C'est là que les concepts comme les faux et les moignons entrent en scène. J'utilise moq pour se moquer de mes tests unitaires sivlerlight. Une autre chose importante que je suis et qui, selon moi, facilite les tests unitaires est le principe de la responsabilité unique. Enfin, traitez votre code de test comme un code de production, sinon vos tests pourraient vous donner une fausse idée, que les attentes sont satisfaites. Vos tests unitaires sont du code et peuvent donc avoir des bugs.

Quelles sont les différences entre les tests unitaires et les tests unitaires automatisés?

Je ne suis pas très sûr de ce que vous voulez dire par là. Les tests unitaires sont un moyen automatisé de tester les boîtes blanches. Vous pouvez avoir des scripts qui exécutent tous les tests unitaires, chaque fois que vous cochez n'importe quel code dans le référentiel. Cela peut faire partie de l'intégration continue.

Comment puis-je de façon significative test unitaire dans silverlight

En silverlight, pour faciliter les tests, vous devez utiliser les commandes, au lieu d'écrire du code dans les fichiers de code-behind. Cela vous permet de simuler le clic du bouton et d'autres événements de l'interface utilisateur lors du test unitaire. En utilisant le modèle MVVM avec les commandes, vous pouvez tester tout le code C# (pas xaml), jusqu'à l'interface utilisateur (convertisseur, machines virtuelles, etc.).

Il est très difficile de tout mentionner dans cette seule réponse. Je suggère, vous google pour MVVM, les commandes dans Silverlight, Martin fowler - Mock ne sont pas stubs, cadres moqueurs pour Silverlight, injection de dépendance

+0

J'espère que vous pourriez implémenter quelque chose sans changements drastiques à l'application. i.e. Je vois ceci: \t \t publics IQueryable GetAspnet_Users() \t \t { \t \t \t de this.DataContext.aspnet_Users de retour; Et je remarque que le retour est this.DataContext.aspnet_Users, donc est-il pas un moyen de simplement changer le datacontext avec une sorte de mock-db, puis exécutez les méthodes domainservice dans ma classe de test? Je veux dire, à mon oeil non averti, j'aurais quelque chose comme ceci.DataContext = MockDBStructure; MockDBStructure: IDBStructure n'est-ce pas possible? – Jakob

+0

@Jakob. il est très possible de simuler la mise en œuvre d'IDBStructure. Donc, je suppose que vous recevez DataContext comme une dépendance ou l'instance de classe qui a la méthode GetAspnet_Users() (implémente une interface) est injectée (passée par ctor/property/method). –

+0

@PK. Actuellement, les DomainService contenant la méthode GetAspnet_Users() est definded comme public class DomainService: LinqToSqlDomainService donc je ne suis pas vraiment sûr de savoir comment j'échanger DataContext, pour obtenir une mise en œuvre du modèle IRepository pour faciliter les tests unitaires – Jakob

Questions connexes