2009-02-13 4 views
1

J'utilise Pivotal CRM et je ne trouve pas de moyen facile de coder le test unitaire de ses ASR pour ce logiciel. Avez-vous de l'expérience en programmation de test pour ce logiciel?Comment tester l'unité ASR sur Pivotal CRM

Editer: J'ai pensé un moyen simple mais pas parfait de tester. Mais je suis disposé à donner le Bounty à n'importe qui qui donne l'aperçu de minimun.

Répondre

0

La seule réponse possible que je trouve est de déplacer la logique vers d'autres classes que celles qui seraient appelées par l'ASR. De cette façon, vous pouvez tester les classes. Les ASR deviennent plus compliqués et ne seront testés que dans le cadre du test d'intégration.

1

Bonne question. Je voudrais injecter des talons ou des faux sur les méthodes mises en œuvre pour mettre en place le test. Donc si j'implémente l'interface IRFormScript comme ci-dessous. Je pourrais utiliser un stub qui implémente l'interface IRForm pour configurer les attentes sur l'objet de formulaire qui est injecté dans mes méthodes. Certains de ces arguments ne sont que des chaînes, donc c'est facile. Vous devrez également remplacer toutes les autres interfaces de Pivotal afin de tester votre fonctionnalité sans réellement toucher le système réel (IRSystem7, DataAccess, etc.) J'espère que cela vous aidera! Brandon Joyce

public class TDD : Pivotal.Interop.RDALib.IRFormScript 
{   
    public object AddFormData(Pivotal.Interop.RDALib.IRForm pForm, object Recordsets, ref object ParameterList) 
    { 
     throw new NotImplementedException(); 
    } 

    public void DeleteFormData(Pivotal.Interop.RDALib.IRForm pForm, object RecordId, ref object ParameterList) 
    { 
     throw new NotImplementedException(); 
    } 

    public void Execute(Pivotal.Interop.RDALib.IRForm pForm, string MethodName, ref object ParameterList) 
    { 
     throw new NotImplementedException(); 
    } 

    public object LoadFormData(Pivotal.Interop.RDALib.IRForm pForm, object RecordId, ref object ParameterList) 
    { 
     throw new NotImplementedException(); 
    } 

    public object NewFormData(Pivotal.Interop.RDALib.IRForm pForm, ref object ParameterList) 
    { 
     throw new NotImplementedException(); 
    } 

    public void NewSecondaryData(Pivotal.Interop.RDALib.IRForm pForm, object SecondaryName, ref object ParameterList, ref Pivotal.Interop.ADODBLib.Recordset Recordset) 
    { 
     throw new NotImplementedException(); 
    } 

    public void SaveFormData(Pivotal.Interop.RDALib.IRForm pForm, object Recordsets, ref object ParameterList) 
    { 
     throw new NotImplementedException(); 
    } 

    public void SetSystem(Pivotal.Interop.RDALib.RSystem pSystem) 
    { 
     throw new NotImplementedException(); 
    }  
} 
+0

Salut Brandom, Merci beaucoup. J'ai des problèmes pour accepter votre réponse (voir http://stackoverflow.com/questions/637822/is-there-a-bug-keeps-me-from-accepting-an-answer-from-an-expired-bounty) De toute façon je vais devoir essayer. Mais je sens que je manque quelque chose de la grande image et je suis nouveau pour les tests. – borjab

+0

Se moquer de tout ça peut sembler être un travail, mais c'est assez facile avec un cadre moqueur comme Rhino Mocks. Il s'agit vraiment de pouvoir tester cette chose de manière isolée. Cela en vaut la peine. Bonne chance! –

0

Je pense que deux fois dans la programmation tout Pivotal CRM. CDC n'est tout simplement pas à la hauteur des techniques de programmation modernes. Traitez-le comme une plate-forme "tweak seulement si absolument nécessaire", et vous ferez bien. Je ne veux pas être dur, mais si vous postez des questions à propos de Pivotal CRM sur stackoverflow.com, alors vous utilisez probablement Pivotal CRM.

Je dis cela parce que je sais de première main la douleur qui vient de l'utiliser mal. J'ai travaillé avec ça pendant 6 ans.

+0

Je suis d'accord c'est un peu pénible, mais vous pourriez probablement dire cela à propos de beaucoup de logiciels "Enterprisey". Le fait est que vous avez ici un moyen de tester le code que vous mettez dans votre implémentation en utilisant des techniques de stubbing/moquerie. Et mon conseil serait de le faire définitivement! –