IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

Problème : Test Unitaire CollectionView MVVM


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par défaut Problème : Test Unitaire CollectionView MVVM
    Voilà Je bloque depuis peu sur la mise en place de tests unitaire avec mes ViewModels.

    J'utilise dans mes ViewModels des CollectionView, mais quand je lance des tests unitaires qui vont agir sur des ViewModels qui utilisent des ICollectionView voilà le jolie message d'erreur que j'ai :

    System.Reflection.TargetInvocationException: Une exception a été levée par la cible d'un appel. ---> System.NotSupportedException: Ce type de CollectionView ne prend pas en charge les modifications de son SourceCollection à partir d'un thread différent du thread du Dispatcher..
    Si quelqu'un est déjà tombé sur ce problème je suis preneur d'une éventuelle solution?

    En attendant je continue de chercher.

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Tes tests unitaires, ils modifients la collection "source" de tes CollectionView ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par défaut
    Oui en effet un de mes test unitaire modifie la collection source d'une CollectionView et c'est ce test qui ne passe pas.

    Pour exemple :

    J'ai une collection source de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Contacts = new ObservableCollection<Contact>();
    Ma CollectionView :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ContactsView = CollectionViewSource.GetDefaultView(Contacts);
    Et dans ce test unitaire en question je simule l'ajout d'un élément en appelant une Méthode "AddContact" de mon "ViewModel", et dans ce "AddContact" il y a un truc du style :

    A savoir que quand je lance le test unitaire en question de façon unitaire ça fonctionne, par contre c'est quand je lance toute ma série de test que ça plante sur ce test.

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Et bien tu as le message d'erreur qui est bien parlant: tu dois passer par le Dispatcher et BeginInvoke pour mettre à jour ta collection

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par défaut
    Oui j'avais bien compris que je ne pouvais pas modifier ma SourceCollection à partir d'un thread différent et c'est ce qui est apparemment fait quand je lance ma série de test.

    Alors j'étais parti rapidement comme tu le suggère sur ce genre de code dans mon ViewModel, mais rien n'y fait j'ai toujours le message d'erreur (Rmq pas convaincu de ce code non plus )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     DispatcherOperation op = Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Normal, new ThreadStart(() =>
                                {
                                    Contacts.Add(new Contact() { Id = c.Id, LibContact = c.LibContact });
                                }));
                                op.Wait();
    De façon plus général je voulais savoir si quelqu'un était déjà tombé sur le problème et comment il l'avait résolu en pensant que c'était assez courant comme soucis.

    Bon j'avoue ne pas avoir eu bcp de temps depuis hier pour traiter le sujet, je vais donc y regarder cette après-midi.

    Merci.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par défaut
    Bon j'ai compris.

    En faite le problème venait du fait que j'utilise une classe "Mediator" maison intégré à mon petit toolkit MVVM pour communiquer entre les ViewModels(Pattern Médiator) et qui utilisait des références statique de façon maladroite, du coût quand je lançais ma série de test je n'était plus dans le même "Thread Context" entre mon Mediator et mes ViewModel. J'ai donc revu ma classe "Mediator" et à priori ça fonctionne.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème tests unitaires avec dom4J
    Par Hizin dans le forum Android
    Réponses: 2
    Dernier message: 12/06/2013, 13h55
  2. [2.x] Passage à la PR12 : problème de test unitaire
    Par davidbouv dans le forum Symfony
    Réponses: 0
    Dernier message: 22/04/2011, 12h59
  3. [1.x] Problème tests unitaire Doctrine
    Par julienlacorne dans le forum Débuter
    Réponses: 3
    Dernier message: 29/01/2011, 14h01
  4. Réponses: 3
    Dernier message: 27/01/2011, 11h43
  5. [WD14] Tests unitaires: problème d'affichage
    Par Poupinelelapin dans le forum WinDev
    Réponses: 0
    Dernier message: 11/05/2010, 13h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo