Je reçois une nullpointerException lorsque j'essaie de tester des méthodes dans un objet JDialog. Je dois initialiser une simulation de la version du parent de la boîte de dialogue ainsi qu'une autre classe qui sera utilisée (en plus d'appeler une méthode statique. Le code est comme suit:
void addOwnedWindow(WeakReference weakWindow) { if (weakWindow != null) { synchronized(ownedWindowList) { ***<<------ offending line*** // this if statement should really be an assert, but we don't // have asserts... if (!ownedWindowList.contains(weakWindow)) { ownedWindowList.addElement(weakWindow); } } } }
3 Réponses :
a l'air délicat! Essentiellement, vous allez devoir trouver toutes les méthodes qui sont appelées sur si Cela ressemble à une corvée difficile, que diriez-vous d'essayer de créer une implémentation par défaut de J'ai eu un problème similaire il y a un moment où j'essayais d'assister à un auditeur Spring JMS. À tort ou à tort, j'ai eu une solution de travail en créant ma propre implémentation par défaut de dans mon exemple, j'ai pu obtenir mes tests en passant au dos d'un Controlframe code> dans le cadre du constructeur, puis saupoudrent quelques appels vers
icontrolframe code> que vous créez dans votre configuration de test () et à l'aide de cette institute d'une simule. P>
defaultMessagelisenContainer code> qui me donnait des problèmes similaires à ce que vous décrivez. Ma solution consistait à étendre la mise en œuvre réelle avec ma propre version spécifique à tester qui ressemblait à ce p>
NULL code> Valeur de la méthode Problème CreateConnection (). Peut-être que la même approche peut vous aider. P> p>
Le propriétaireWindowlist code> est
transitoire code> dans le
java.awt.window code> classe. Votre instance du
JDialog code> est-elle sérialisée? Si tel est le cas, vous devrez peut-être utiliser la méthode
lisechabject (java.io.oObjectstream) code> à partir de l'interface Serializable pour réinitialiser le
propriétairewinwindows code> p> p>
Je ne sais pas à quoi ressemble votre icontrolframe, mais en passant un cadre puis dans votre configuration (): p> moqueur code> sur super () ne fonctionne pas. J'ai dû instancier ma propre version:
Avez-vous déjà eu ce travail? Si oui, cela vous dérangerait-il de poster la solution?
Starnge Vous obtenez NULL POINTER AT
SYNCHRONISÉ (propriétéWindowlist) code>. Si vous vérifiez
propriétairewindows code> membre de données dans la fenêtre.java, il a été instancié et jamais affecté à NULL à nouveau. Vous vous demandez ce qui pourrait éventuellement faire ce membre de données null. Pouvez-vous vérifier votre code si cet élément de données est accédé (à l'aide de la réflexion) et a été modifié en null. Son cas le moins possible que ce membre de données doit être modifié manuellement mais mieux pour s'assurer.
@glenneroo, je pense que mettre une prime ici au lieu de créer une nouvelle question avec votre propre code était une erreur. Pourriez-vous fournir quelques détails tels que ce que vous faites et empilez la trace d'exception que vous obtenez.
@Serggr, vous avez probablement raison, ma configuration est légèrement différente (pas de PowerMockRunner) mais autrement la même exception et lieu. La trace de la pile ne semble pas très utile, mais je créerai une autre question et j'espère qu'il ne s'agit pas d'une duplication.
@glenneroo, en fait, il pourrait être utile d'ajouter un lien à cette question et de mentionner que vous n'avez toujours aucune solution pour votre problème.