2010-10-26 22 views
3

J'essayais de créer un framework Junit Testing dans un framework RFT existant. La configuration de JUnit fonctionne très bien au point où nous n'avons pas besoin d'instancier des classes de frameworks. Chaque fois que nous essayons d'accéder à des classes de framework, il lève l'exception ci-dessous. J'ai cherché des problèmes similaires en ligne, mais je n'ai pas trouvé de solution. Veuillez suggérer une solution si un organisme a été confronté à un problème similaire. La version de RFT est 8.1, la version de JUnit est 4RFT et JUnit Problème connexe

java.lang.NoClassDefFoundError: com.ibm.rational.test.lt.arm.IArmable 
at java.lang.ClassLoader.defineClass(ClassLoader.java:265) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:69) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:521) 
at java.net.URLClassLoader.access$300(URLClassLoader.java:66) 
at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:985) 

Répondre

0

Cela ressemble à une erreur de classpath. Si vous appelez JUnit depuis ANT, Maven ou un outil de construction similaire, assurez-vous que vous avez les fichiers JAR appropriés dans le chemin de classe. Rappelez-vous, certains JAR ont leurs propres dépendances. Si toutes ces dépendances ne se trouvent pas dans le classpath, vous obtiendrez java.lang.NoClassDefFoundError.

Si vous essayez d'exécuter à partir du client GUI, cela peut être un peu plus difficile. Essentiellement, vous devrez ajouter toutes les dépendances à l'option -classpath de jvm.

+0

J'ai le même problème; le classpath devrait être bon, étant donné que je peux exécuter les tests RFT réels. Existe-t-il un classpath distinct pour l'exécution en tant que test JUnit? – Yamikuronue

+0

Sauf si le RFT que vous avez compilé est différent de ce que vous exécutez, NoClassDefFoundError est le symptôme d'un problème de classpath. Ne connaissant pas spécifiquement RFT, mais connaissant les problèmes courants avec JUnit, cela dépend de la façon dont les tests JUnit sont appelés. Il n'y a pas de chargement automatique de Jar comme il y a avec les dépendances DLL dans .NET. Si vous exécutez JUnit en utilisant le chargeur de l'interface graphique, vous devez vous assurer que le classpath inclut également toutes les dépendances. Etc. –

+0

Il semble que RFT utilise un certain pot uniquement dans le contexte jUnit et pas dans les opérations de script normales. Voir ma réponse pour plus de détails – Yamikuronue

1

I figured it out:

Vous devez ajouter le pot "com.ibm.rational.test.lt.rftarm_8.2.1.v20120105_1832.jar" à votre Chemin de compilation Java. Le mien se trouvait dans C:/Program Files/IBM/IMShared/plugins /. Il est venu avec RFT, mais ne semble pas avoir été inclus dans le Build Path par défaut.