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

ASP.NET Discussion :

System.NullReferenceException avec constante


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2004
    Messages : 166
    Points : 123
    Points
    123
    Par défaut System.NullReferenceException avec constante
    J'ai un site web en asp.net 2.0 qui fonctionne correctement:

    Lorsque je crée un utilisateur depuis l'interface web, une méthode d'ajout est appelé. Cette méthode effectue une requete sur la base de données dont la chaine de connection est stockée dans une constante.

    Lorsque je j'appel la méthode d'insertion depuis mon projet de tests unitaires, j'intercepete l'erreur System.NullReferenceException à cause de la constante.

    D'où peut venir le problème?

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Il nous faudrait plus d'infos là

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2004
    Messages : 166
    Points : 123
    Points
    123
    Par défaut
    comme?

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Le détail de l'exception, le code mis en cause...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2004
    Messages : 166
    Points : 123
    Points
    123
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SqlHelper.ExecuteNonQuery(CONST_DATABASE.SQL_CONNECTION_STRING,
                    CommandType.StoredProcedure, CONST_DATABASE.CONST_SP.SP_UTILISATEUR_SEARCH_UTILISATEUR, oSqlParameters);
    l'erreur:
    La méthode de test UnitTests.UserBOTest.InsertUserTest a levé une exception : BOException: ---> DAOException: ---> System.TypeInitializationException: Une exception a été levée par l'initialiseur de type pour 'CONST_CONNECTION'. ---> System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet..

  6. #6
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Ca te retourne bien qqchose CONST_DATABASE.SQL_CONNECTION_STRING ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2004
    Messages : 166
    Points : 123
    Points
    123
    Par défaut
    dans le cas où la méthode est appelé depuis une page web, oui, y il y a bien quelque chose dans la constante.
    Par contre quand je fais appel à la méthode depuis mon projet de tests unitaires, là, il me sort l'exception...

  8. #8
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Je sais pas ce qu'est un projet de tests unitaires mais est-ce que cette constante existe dans ce projet?
    Apparemment pas

  9. #9
    Membre éprouvé Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Points : 1 256
    Points
    1 256
    Par défaut
    Salut,

    2 Questions :

    1) Ta constante est dans une classe "séparée" ou dans le code-behind d'une page Web ?
    2) Peux-tu nous montrer le code de la classe/page contenant la constante ainsi que le code de ta classe test nUnit (seulement ce qui concerne le PB, pas tout le code)

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2004
    Messages : 166
    Points : 123
    Points
    123
    Par défaut
    elle n'a pas de raison de s'y trouver, puisque la constante est nécessaire dans la méthode d'insertion.

    peut-être mon code n'était pas suffisament claire...

    J'ai une méthode d'ajout dans mon projet web:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public int Insert(Entity e)
    {
        ...
        SqlHelper.ExecuteNonQuery(CONST_DATABASE.SQL_CONNECTION_STRING,
                    CommandType.StoredProcedure, CONST_DATABASE.SP_UTILISATEUR_SEARCH_UTILISATEUR, oSqlParameters);
        ...
    }
    Les constantes se trouvent dans le projet web dans une classe séparée.

    Lorsque j'appele la méthode insert depuis le projet web, aucun problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Maclasse mc = new Maclasse();
    mc.Insert(e);
    Par contre si je l'appele depuis le projet de test, là il y a problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    [TestMethod]
            public void InsertUserTest() {
     
                UserEntity oUser = this.CreateUserEntity();
                UserBO oUserBO = new UserBO();
     
                TestContext.BeginTimer("InsertUserTest");
                bool result = oUserBO.Insert(oUser);
                TestContext.EndTimer("InsertUserTest");
     
                Assert.IsTrue(result, "Erreur lors de l'insertion du user");
                Assert.IsTrue(oUser.Id != 0);
            }

  11. #11
    Membre éprouvé Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Points : 1 256
    Points
    1 256
    Par défaut
    OK ca se précise un peu.
    Encore qq détails. Quand tu parles de projet Web, tu veux dire quoi ? Car un projet Web peut être composé de plusieurs classes, de pages Web avec leur CodeBehind, etc...

    Bon de ce que je comprends :

    Tu as une page Web (appelons la A) qui contient une constante E de type Entity
    Dans la même assembly, tu as une classe B qui possède une méthode Insert prenant en entrée un objet Entity.

    Quand dans A du fait B.Insert(E), pas de PB.

    Là, je ne suis plus. Ton projet NUnit est censé tester quoi : A ou B ?
    Si c'est A, comment l'initialise tu ?

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2004
    Messages : 166
    Points : 123
    Points
    123
    Par défaut
    mon projet web:

    Une page A avec sous code behind
    Une classe B contenant la méthode insert
    Une classe C contenant mes constantes

    Le Entity n'est pas important ici, c'est simplement l'objet que je passe à la méthode pour créer l'utilisateur (Entity ne peut donc pas être une constante)

    Si je fais dans A: B.Insert() -> aucun soucis

    Mon projet de test, ce n'est pas du NUnit, mais du Unittesting inclu avec VS2005 TS
    Dans ce projet, j'ai une classe T dans laquelle je fait B.Insert()
    Sachant que B ets bien référencé dans le projet de test. dans ce cas j'ai l'exception sur la constante.

  13. #13
    Membre éprouvé Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Points : 1 256
    Points
    1 256
    Par défaut
    Tu initialise bien ta classe C contenant les constantes dans ta classe de test ?

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2004
    Messages : 166
    Points : 123
    Points
    123
    Par défaut
    Pourquoi faire celà?
    La méthode qui utilise les constantes le fait de la facon suivante:

    Nom_Classe_C.Nom_Constante

Discussions similaires

  1. Erreur System.NullReferenceException avec MySQL
    Par CleeM dans le forum Windows Forms
    Réponses: 4
    Dernier message: 26/02/2008, 17h17
  2. [VC++] System TrayIcon avec QT
    Par yelbied dans le forum MFC
    Réponses: 4
    Dernier message: 29/11/2005, 10h46
  3. [Système]communiquer avec un processus externe sous windows
    Par tweety dans le forum Général Java
    Réponses: 4
    Dernier message: 14/11/2005, 17h17
  4. [systeme] - pb avec deux OS Win 98 et WIN XP
    Par rico_49 dans le forum Windows XP
    Réponses: 1
    Dernier message: 24/10/2005, 14h25
  5. Réponses: 13
    Dernier message: 20/06/2005, 14h13

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