J'ai configuré un serveur de build TFS 2008 64 bits avec Sharepoint, une intégration continue et un MSTest prêt à l'emploi. Les tests unitaires pour les classes de logique métier simples fonctionnent parfaitement et les résultats des tests sont publiés dans TFS. Cependant, tout test utilisant l'API Sharepoint échoue horriblement, SPFarm.Local
renvoie null et ainsi de suite. Y'a t'il un moyen d'arranger cela? Les tests s'exécutent correctement dans un environnement de développement 32 bits par ailleurs identique (Windows Server 2008 sous Hyper-V, Sharepoint corrigé jusqu'à la mise à jour cumulative de juin 2009) à partir de Visual Studio et de la ligne de commande. l'utilisation de SPContext.Current
ou de toute autre partie de l'API qui doit être exécutée dans un contexte de serveur Web. J'ai exclu permissions issues, car le compte de l'agent de build peut déployer la solution et créer des collections de sites très bien avec stsadm. Le prochain coupable pourrait être que les tests unitaires étaient exécutés avec un 32-bit process, qui ne pouvait pas accéder correctement à l'API Sharepoint 64 bits. J'ai essayé a workaround, mais il a l'effet secondaire de désactiver le support de TFS dans MSTest. Est-ce que je dois attendre les versions 2010 des outils MS (et espérer le meilleur) ou existe-t-il un framework de test tiers fonctionnant nativement en 64 bits et pouvant publier les résultats des tests dans TFS 2008?Intégration continue avec Sharepoint 64 bits et TFS 2008?
Répondre
Je viens de rencontrer moi aussi ce problème. Après avoir chassé sur le net, j'ai finalement trouvé cet article: http://fastrup.net/post/Visual-Studio-Unit-Tests-and-64-bit-SharePoint-does-not-play.aspx
Je me penchais déjà en direction de NUnit pour voir si cela ferait une différence, et maintenant je vais explorer cette avenue et si ça marche ce sera mon approche. C'est frustrant quand vous voulez faire la bonne chose et que l'unité teste tout ce que vous faites mais les outils ne supportent pas l'environnement dans lequel vous devez travailler.
Cela se produit car SharePoint n'a aucun contexte dans les tests en cours d'exécution. Le contexte de SharePoint (en particulier en pensant à l'objet SPContext.Current ici) n'est rempli que lorsqu'il est exécuté dans une page ASP.NET dans le cadre d'une requête HTTP. MSTest ne fait pas ça.
Si vous devez effectuer des tests d'intégration (distincts des tests unitaires) par rapport à l'API SharePoint, vous pouvez utiliser Typemock Isolator for SharePoint. Cela se moquera de ces objets SharePoint afin qu'ils ne soient plus null. Voir Francis Cheung's blog pour un exemple.
Modifier après le commentaire: Je n'ai pas d'expérience directe avec cela, mais je ne vois pas pourquoi il y aurait un problème entre 32 bits et 64 bits. Veuillez regarder de près les différences d'environnement et de configuration.
+1 pour la référence Typemock Isolator for SharePoint. J'ai commencé à chercher dans cet outil myslef récemment. – Colin
Les tests n'utilisent pas SPContext.Current et n'utilisent aucune partie de l'API qui utilise SPContext en interne (comme dans ma précédente question sur PortalSiteMapProvider). Les tests s'exécutent très bien dans un environnement 32 bits identique. – Hirvox
@Hirvox: D'accord, vous ne l'avez pas mentionné dans votre question. Il pourrait s'agir d'une chose 64 vs 32 bits, mais je suppose qu'il y a une différence dans l'environnement/config. –
- 1. JSTestDriver et intégration continue
- 2. TAPI sur Windows 2008 Édition 64 bits
- 3. Intégration continue/conseil Cruisecontrol
- 4. Extraction pour intégration continue
- 5. Intégration continue pour iphone xcode
- 6. NAnt avec tests d'intégration DB, et éventuellement intégration continue
- 7. Puis-je déployer des solutions SharePoint avec des assemblys 32 bits sur une batterie de serveurs SharePoint 64 bits?
- 8. TFS 2008 sur Windows 2008 avec SQL Server 2008
- 9. Serveur VMWare 1.0.7 sur Windows 64 bits 2008 Édition
- 10. Construire 32 bits avec llvm-gcc 64 bits
- 11. Sérialisation binaire .NET entre OS 32 bits et 64 bits
- 12. Ciblage 64 bits
- 13. Connexion SQL Server et Vista 64 bits?
- 14. compilation 64 noyau linux bits avec gcc
- 15. Comment créer une DLL .NET 64 bits avec l'interopérabilité COM 64 bits?
- 16. L'iPhone OS 64 bits ou 32 bits?
- 17. Comment utiliser une intégration continue avec un projet Eclipse?
- 18. Intégration de shell TFS TortoiseTFS?
- 19. FindNextFile échoue sur Windows 64 bits?
- 20. Workflow SharePoint 2007 x64 avec Visual Studio 2008?
- 21. Oracle à partir de .Net avec un client 64 bits
- 22. Hébergement de contrôle de source géré et intégration continue avec CVSDude et CruiseControl.net
- 23. Frais généraux de 64 bits
- 24. Mise à niveau 64 bits
- 25. Construction de bibliothèques 64 bits
- 26. Ce matériel sera-t-il compatible 64 bits avec Windows Server 2008?
- 27. Comment cross-compiler 64 bits DLL avec VS 2005 sur l'ordinateur 32 bits?
- 28. SHGetFolderPath() 32 bits par rapport à 64 bits
- 29. Application java 64 bits à utiliser 32 bits dll
- 30. Compiler le projet 32 bits VS 2003 en 64 bits
Suite à cela. Après avoir utilisé NUnit pendant une semaine sur mon projet SharePoint actuel, je suis vendu. Tout fonctionne comme je le souhaite, et je n'ai encore rencontré aucun obstacle. La seule chose supplémentaire que je voudrais est d'être en mesure d'engager le débogueur sur les tests de NUnit. Je suis sûr qu'il y a un moyen, cependant, je ne l'ai pas encore trouvé. –