J'ai trois projets dans ma solution:Est-ce que log4net tue mes tests unitaires WCF?
- Un service Web WCF qui fournit des fonctionnalités que je veux tester
- une application Web qui demande que le service Web
- Un projet de test qui exécute des tests sur le service .
Le service Web et l'application Web à la fois l'utilisation log4net avec des fichiers de configuration distincts et cette ligne dans les AssemblyInfo.cs pour la configuration:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
Lorsque je navigue à l'URL du service Web (http://localhost/MyWebService/MyWebService.svc), Il apparaît comme prévu - information et un lien vers le wsdl. Lorsque j'utilise l'application Web, tout fonctionne correctement. Le code appelle le service Web et obtient les réponses correctes en réponse. La journalisation se produit à la fois à partir de l'application Web et du service Web.
Cependant, quand je lance mes tests unitaires, ils sont tous échouent à l'exception suivante:
Test method MyServiceTest.MyServiceAuthTest.TestValidateCorrectly threw exception: System.ServiceModel.ServiceActivationException: The requested service, 'http://localhost/MyWebService/MyWebService.svc' could not be activated. See the server's diagnostic trace logs for more information.
Dans les journaux d'événements pour ma machine locale, je reçois le message suivant:
WebHost failed to process a request. Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/12905972 Exception: System.ServiceModel.ServiceActivationException: The service '/MyWebService/MyWebService.svc' cannot be activated due to an exception during compilation. The exception message is: Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821' or one of its dependencies. Strong name signature could not be verified. The assembly may have been tampered with, or it was delay signed but not fully signed with the correct private key. (Exception from HRESULT: 0x80131045).
J'ai supprimé et remplacé les références, nettoyé et reconstruit, et même purgé les fichiers temporaires asp.net, en vain. Le site Web appelle le service sans problème, mais les tests échouent.
Est-ce que quelqu'un sait ce qui pourrait se passer ici?
Mise à jour: J'ai supprimé toutes les références à log4net et les tests ont été exécutés et ont réussi sans problème. Évidemment, c'est loin d'être préférable. Aucune suggestion?
Mise à jour 2: Une combinaison de ces deux choses a résolu le problème:
- Ajout d'une référence à log4net dans mon projet de test, en veillant à initialiser complètement.
- Utilisé la version release de log4net 1.2.10 plutôt que la version de débogage.
Ceci est une bonne explication. Une autre solution consiste à utiliser d'autres moyens pour configurer log4net. Par exemple, en chargeant le fichier de configuration dans le code à la place, et c'est ce que je préfère car cela vous permet de gérer le fichier manquant des cas exceptionnels. –
Pour être honnête, je pense que je l'ai fait sans succès. Je suis à la maison en ce moment, mais j'y retournerai certainement quand je retournerai au travail. J'ai peut-être manqué une étape à un certain moment ... – Damovisa
Pas tout à fait sûr de ce qui a résolu le problème, mais cela a certainement aidé. J'ai ajouté des références au projet de test et l'ai instancié dans init, mais il a quand même échoué. J'ai supprimé la référence au débogage de log2net et l'ai remplacé par une version de version et tout a fonctionné. La version 1.2.10 en passant ... – Damovisa