Publié dimanche 27 avril 2008 15:34 par anouvel

Sharepoint : La CodeTesterWebPart en pratique

Lorsque l'on développe sous Sharepoint, à chaque fois que l'on modifie son code il faut compiler, packager, déployer, recycler son application pool, et attendre que Sharepoint s'initialise. On peut alors vérifier l'éxécution du code si on a la chance d'avoir un bouton qui le déclenche directement, mais celui-ci peut aussi être éxécuté en fin de workflow ou lors d'évènements plus ou moins évidents à reproduire.

Tester du code dans son contexte d'exécution est donc souvent une tâche longue et fastidieuse pour le développeur Sharepoint.

La CodeTesterWebPart permet la compilation et l'éxécution instantanée de code C#. Elle est disponible depuis quelques jours sur CodePlex : http://www.codeplex.com/CodeTesterWebPart

On dispose d'une boite de texte dans laquelle on saisit le code que l'on souhaite, et d'un bouton "Run that method!" qui permet de l'éxécuter instantanément. On peut modifier la liste des assemblies référencées (en spécifiant leur chemin sur le disque) ainsi que les usings :

ListLists

Le bouton "Save Inputs" permet de sauvegarder les références, usings, et le code grâce au concept de Personnalization.

Si il y a des erreurs de compilation, elles sont affichées :

CompilerResults

La méthode de test dispose de deux arguments permettant de tester du code d'interface graphique : la page courante et un placeholder qui est situé juste en dessous du corps de la webpart. Ici, on joue avec un diagramme de gantt et on injecte du javascript dans la page :

Gantt2

Autre avantage, le code s'exécute avec le contexte courant. On peut donc tester tout ce qui concerne les droits. Par exemple, avec un compte visiteur, si on tente de modifier le titre du site courant avec la CodeTesterWebPart, on est redirigé vers la page Access Denied. On se rend alors compte qu'il faut utiliser  SPSecurity.RunWithElevatedPrivileges, le code suivant fonctionne sans problème :

SPSecurity

On pourrait se dire que les limites sont atteintes dès lors que l'on veut tester du code récursif. Non, c'est possible aussi ! Il suffit de tricher un peu sur le parenthèsage. Après tout, le code est compilé tel qu'il est rendu à l'écran.

Recursive

Mais comment ca marche ?!

Le namespace System.CodeDom contient des classes qui permettent de compiler dynamiquement une assembly à partir de code source sous forme de chaine de caractères. La CodeTesterWebPart compile ainsi une assembly en mémoire, il n'y a pas d'écriture sur le disque. La méthode TestMethod est ensuite appellée par reflection, de manière tout à fait classique. Pour les plus curieux, le code source est disponible sur CodePlex.

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

# re: Sharepoint : La CodeTesterWebPart en pratique @ dimanche 27 avril 2008 18:45

carrément sympa :)

phil

# re: Sharepoint : La CodeTesterWebPart en pratique @ dimanche 27 avril 2008 23:58

Coder sous SharePoint, c'est beau :-)

Tu as eu une très bonne idée Arnault :-)

Gribouillon

# re: Sharepoint : La CodeTesterWebPart en pratique @ lundi 28 avril 2008 08:13

Merci !

A priori la prochaine étape serait la gestion du VB.NET, mais si vous avez d'autres idées d'évolution (non, pas intellisense...) je suis preneur

anouvel

# re: Sharepoint : La CodeTesterWebPart en pratique @ lundi 28 avril 2008 14:46

Arf, moi j'aime bien, surtout la pile de compilation avec les warnings.

Good job !

Perso, je rajouterais un petit truc : pouvoir plier/déplier la partie code et demo

Ainsi, si le code est vraiment long, on peut le replier pour voir de suite le résultat.

Un dernier point :

Ca me rappelle cependant un autre petit projet un poil similaire de Carlos Segura

- csegScript -

http://www.ideseg.com/CategoryView,category,csegScript.aspx

http://www.ideseg.com/csegScriptWebpart10WriteAndTestCodeDirectlyIntoYourSharepointSite.aspx

>>> Bon en même temps, je suis un archiviste humain des rss SharePoint :)

l'apporche d'une liste de sample à evaluer avec param et compagnie est un belle approche non ?

A++ et encore bravo

themit

# re: Sharepoint : La CodeTesterWebPart en pratique @ lundi 28 avril 2008 15:51

Effectivement, son projet est similaire et a l'air sympa aussi

Bonne idée le pliage du code je vais voir ce que je peux faire ;)

merci de ton retour

anouvel


Les 10 derniers blogs postés

- [Refactoring] ReSharper pour Visual Studio 2010 (Preview) par Thomas Jaskula le il y a 12 heures et 40 minutes

- [Refactoring] Analyser vos exceptions avec ReSharper Exceptional par Thomas Jaskula le il y a 13 heures et 54 minutes

- SharePoint 2007 : patterns & practices SharePoint Guidance par Philippe Sentenac [MVP SharePoint] le 07-03-2009, 09:56

- [Visual Studio 2010] Les tests cases c’est bien, mais je vais devoir tout réécrire ? par Etienne Margraff le 07-03-2009, 09:00

- MVP[Gribouillon].AddYear par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le 07-03-2009, 08:45

- Clinique INSIA - Projet de fin d’Etudes (Silverlight 3 MVVM et OutOfBrowser, WCF, TFS) - Part 1 par David REI le 07-02-2009, 23:38

- C’est la crise ? Bah pourquoi cramer du budget pub alors ? par Nix's Blog le 07-02-2009, 15:31

- Soyons MVP ! par TheSaib .NET blog le 07-02-2009, 12:15

- SharePoint : Gestion des Erreurs 6398, 7076 et 6482 par Blog Technique de Romelard Fabrice le 07-02-2009, 11:53

- EF avec WPF par Matthieu MEZIL le 07-02-2009, 10:18