Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[MacOS X]lancer un package de test

8 réponses
Avatar
yvon.thoravalNO
je souhaite tester un connecteur java-->MySQL

je l'ai mis dans "Library/Java/Extensions"

je lance le test par :

java -classpath /Library/Java/Extensions/:. testsuite.BaseTestCase

le répertoire . contient bien le package "testsuite" dont le source
démarre par :

> package testsuite;
>
> import java.sql.Connection; sql.DriverManager; sql.PreparedStatement;
> import java.sql.ResultSet; sql.SQLException; sql.Statement;
> import java.util.Properties;
>
> import junit.framework.TestCase;
>
> /** * Base class for all test cases. Creates connections, * statements,
> etc. and closes them. * * @author Mark Matthews * @version $Id:
> BaseTestCase.java,v 1.8.2.1 2003/08/21 16:04:31 mmatthew Exp $ */ public
> abstract class BaseTestCase extends TestCase {


cependant j'obtiens le message d'erreur :

iB:~/Desktop/testsuite yvonthor$ java -classpath
/Library/Java/Extensions/:. BaseTestCase Exception in thread "main"
java.lang.NoClassDefFoundError: BaseTestCase (wrong name:
testsuite/BaseTestCase) at java.lang.ClassLoader.defineClass0(Native
Method) [...]

et, si je lance le test par :

iB:~/Desktop/testsuite yvonthor$ java -classpath
/Library/Java/Extensions/:. testsuite.BaseTestCase

j'obtiens :

Exception in thread "main" java.lang.NoClassDefFoundError:
testsuite/BaseTestCase

-- Yvon Thoraval

8 réponses

Avatar
Vincent Brabant

je souhaite tester un connecteur java-->MySQL

je l'ai mis dans "Library/Java/Extensions"

je lance le test par :

java -classpath /Library/Java/Extensions/:. testsuite.BaseTestCase

le répertoire . contient bien le package "testsuite" dont le source
démarre par :
Le répertoire . contient bien un réopertoire testsuite, qui lui contient bien un fichier BaseTestCase.class ?



package testsuite;

import java.sql.Connection; sql.DriverManager; sql.PreparedStatement;
import java.sql.ResultSet; sql.SQLException; sql.Statement;
import java.util.Properties;

import junit.framework.TestCase;

/** * Base class for all test cases. Creates connections, * statements,
etc. and closes them. * * @author Mark Matthews * @version $Id:
BaseTestCase.java,v 1.8.2.1 2003/08/21 16:04:31 mmatthew Exp $ */ public
abstract class BaseTestCase extends TestCase {
Si tu classe est abstraite, tu ne pourra jamais l'utiliser directement.





cependant j'obtiens le message d'erreur :

iB:~/Desktop/testsuite yvonthor$ java -classpath
/Library/Java/Extensions/:. BaseTestCase Exception in thread "main"
java.lang.NoClassDefFoundError: BaseTestCase (wrong name:
testsuite/BaseTestCase) at java.lang.ClassLoader.defineClass0(Native
Method) [...]

et, si je lance le test par :

iB:~/Desktop/testsuite yvonthor$ java -classpath
/Library/Java/Extensions/:. testsuite.BaseTestCase

j'obtiens :

Exception in thread "main" java.lang.NoClassDefFoundError:
testsuite/BaseTestCase


démarre depuis iB:~/Desktop/ et mets testsuite.BaseTestCase ({nom du package}.{nom de la classe})

-- Yvon Thoraval



--
Vincent Brabant
----------------
http://www.netbeans.org/index_fr.html
http://vbrabant-fr.skynetblogs.be


Avatar
benoit
Vincent Brabant wrote:


je souhaite tester un connecteur java-->MySQL

je l'ai mis dans "Library/Java/Extensions"

je lance le test par :

java -classpath /Library/Java/Extensions/:. testsuite.BaseTestCase

le répertoire . contient bien le package "testsuite" dont le source
démarre par :


Le répertoire . contient bien un réopertoire testsuite, qui lui contient
bien un fichier BaseTestCase.class ?



package testsuite;

import java.sql.Connection; sql.DriverManager; sql.PreparedStatement;
import java.sql.ResultSet; sql.SQLException; sql.Statement;
import java.util.Properties;

import junit.framework.TestCase;

/** * Base class for all test cases. Creates connections, * statements,
etc. and closes them. * * @author Mark Matthews * @version $Id:
BaseTestCase.java,v 1.8.2.1 2003/08/21 16:04:31 mmatthew Exp $ */ public
abstract class BaseTestCase extends TestCase {



Si tu classe est abstraite, tu ne pourra jamais l'utiliser directement.

oui et non tu ne pourras pas l'intancier ca c clair

mais tu peut appeler un method static ,
public static void main(String[] args);
par example et donc lancer a partir d'un class abstraite

eu va sans dire qu'a mon avis cela ne devrait pas arriver, que je ne
vois pas de modelisation justifiant cela ,
et qu'il faut de toute facon limiter l'utilisation de class abstraite et
favoriser l'utilisation d'interface.
mais bon c possible de le faire.



Avatar
yvon.thoravalNO
Vincent Brabant wrote:

le répertoire . contient bien le package "testsuite" dont le source >
démarre par : Le répertoire . contient bien un réopertoire testsuite, qui

lui contient bien un fichier BaseTestCase.class ?


non, j'étais dans testsuite...

j'ai modifié l'arboresecence en fonction de ça

package testsuite; >> >>import java.sql.Connection;
sql.DriverManager; sql.PreparedStatement; >>import java.sql.ResultSet;




sql.SQLException; sql.Statement; >>import java.util.Properties; >>
import junit.framework.TestCase; >> >>/** * Base class for all test
cases. Creates connections, * statements, >>etc. and closes them. * *


@author Mark Matthews * @version $Id: >>BaseTestCase.java,v 1.8.2.1
2003/08/21 16:04:31 mmatthew Exp $ */ public >>abstract class BaseTestCase
extends TestCase { Si tu classe est abstraite, tu ne pourra jamais
l'utiliser directement.


bon, c'est bien ce que je supputais...

donc j'avais en fait deux erreurs dont l'une cachait l'autre.

donc après correction de l'arborescence si je lance par :

java -classpath /Library/Java/Extensions/:. testsuite.BaseTestCase

ou

java -classpath /Library/Java/Extensions/:. testsuite/BaseTestCase

j'ai la même erreur :

Exception in thread "main" java.lang.NoClassDefFoundError:
junit/framework/TestCase at java.lang.ClassLoader.defineClass0(Native
Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:502) at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:250) at
java.net.URLClassLoader.access$100(URLClassLoader.java:54) at
java.net.URLClassLoader$1.run(URLClassLoader.java:193) at
java.security.AccessController.doPrivileged(Native Method) at
java.net.URLClassLoader.findClass(URLClassLoader.java:186) at
java.lang.ClassLoader.loadClass(ClassLoader.java:299) at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:272) at
java.lang.ClassLoader.loadClass(ClassLoader.java:255) at
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)


donc je suppose que je dois faire un petit script java qui instancie la
classe "public abstract class BaseTestCase" ???

c'est curieux tout de même car ce package est juste supposé tester une
install... donc devrait "marcher" "out-of-the-box" ???

-- Yvon Thoraval





Avatar
yvon.thoravalNO
benoit wrote:

abstract class BaseTestCase extends TestCase {



Si tu classe est abstraite, tu ne pourra jamais l'utiliser directement.

oui et non tu ne pourras pas l'intancier ca c clair

mais tu peut appeler un method static ,
public static void main(String[] args);
par example et donc lancer a partir d'un class abstraite


pratiquement [newbie] comment puis-je l'utiliser ?
--
Yvon Thoraval




Avatar
benoit
commence par retirer le abstract :)

Yvon Thoraval wrote:
benoit wrote:


abstract class BaseTestCase extends TestCase {



Si tu classe est abstraite, tu ne pourra jamais l'utiliser directement.



oui et non tu ne pourras pas l'intancier ca c clair
mais tu peut appeler un method static ,
public static void main(String[] args);
par example et donc lancer a partir d'un class abstraite



pratiquement [newbie] comment puis-je l'utiliser ?






Avatar
Vincent Brabant

Vincent Brabant wrote:


le répertoire . contient bien le package "testsuite" dont le source >


démarre par : Le répertoire . contient bien un réopertoire testsuite, qui
lui contient bien un fichier BaseTestCase.class ?



non, j'étais dans testsuite...

j'ai modifié l'arboresecence en fonction de ça


package testsuite; >> >>import java.sql.Connection;





sql.DriverManager; sql.PreparedStatement; >>import java.sql.ResultSet;
sql.SQLException; sql.Statement; >>import java.util.Properties; >>

import junit.framework.TestCase; >> >>/** * Base class for all test



cases. Creates connections, * statements, >>etc. and closes them. * *
@author Mark Matthews * @version $Id: >>BaseTestCase.java,v 1.8.2.1
2003/08/21 16:04:31 mmatthew Exp $ */ public >>abstract class BaseTestCase
extends TestCase { Si tu classe est abstraite, tu ne pourra jamais
l'utiliser directement.



bon, c'est bien ce que je supputais...

donc j'avais en fait deux erreurs dont l'une cachait l'autre.

donc après correction de l'arborescence si je lance par :

java -classpath /Library/Java/Extensions/:. testsuite.BaseTestCase

ou

java -classpath /Library/Java/Extensions/:. testsuite/BaseTestCase

j'ai la même erreur :

Exception in thread "main" java.lang.NoClassDefFoundError:
junit/framework/TestCase at java.lang.ClassLoader.defineClass0(Native
Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:502) at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:250) at
java.net.URLClassLoader.access$100(URLClassLoader.java:54) at
java.net.URLClassLoader$1.run(URLClassLoader.java:193) at
java.security.AccessController.doPrivileged(Native Method) at
java.net.URLClassLoader.findClass(URLClassLoader.java:186) at
java.lang.ClassLoader.loadClass(ClassLoader.java:299) at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:272) at
java.lang.ClassLoader.loadClass(ClassLoader.java:255) at
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)


donc je suppose que je dois faire un petit script java qui instancie la
classe "public abstract class BaseTestCase" ???

c'est curieux tout de même car ce package est juste supposé tester une
install... donc devrait "marcher" "out-of-the-box" ???

-- Yvon Thoraval
ta classe BaseTestCase fait un extends de TestCase (une classe du framework Junit).

Ce message indique qu'il ne trouve pas cette classe. Tu devrais avoir un junit***.jar quelque part et le rajouter à ton classpath.

Voilà

--
Vincent Brabant
----------------
http://www.netbeans.org/index_fr.html
http://vbrabant-fr.skynetblogs.be






Avatar
Laurent Bossavit
Il s'agit d'une suite de tests JUnit, ça ne se lance pas comme un
programme Java standard. D'abord assure-toi d'avoir JUnit sous la main,
voir
http://junit.org/

Pour lancer une suite de tests, utilise une commande comme:

java -classpath .:junit.jar junit.ui.TestRunner ClasseDeTest

En remplaçant ClasseDeTest par le nom d'une classe de test non-abstraite
(dérivée de BaseTestCase). S'agissant de MM.MySQL (en omettant les infos
sur le classpath pour faire simple), ça sera:

java junit.ui.TestRunner testsuite.regression.ResultSetRegressionTest
java junit.ui.TestRunner testsuite.regression.StringRegressionTest
...etc...

pour chacune des classes de test dans les packages "regression" et
"simple". Idéalement le projet devrait fournir une classe AllTests
permetttant d'enchaîner tous les tests, ça n'a pas l'air d'être le cas
ici.

Laurent
http://bossavit.com/
Avatar
yvon.thoravalNO
Laurent Bossavit wrote:

Il s'agit d'une suite de tests JUnit, ça ne se lance pas comme un
programme Java standard. D'abord assure-toi d'avoir JUnit sous la main,
voir
http://junit.org/




oui, oui, merci, il y avait une "dépendance"...

c'est étonnant d'ailleurs que le README du connector/J ne le mentionne
pas du tout...

Pour lancer une suite de tests, utilise une commande comme:

java -classpath .:junit.jar junit.ui.TestRunner ClasseDeTest

En remplaçant ClasseDeTest par le nom d'une classe de test non-abstraite
(dérivée de BaseTestCase). S'agissant de MM.MySQL (en omettant les infos
sur le classpath pour faire simple), ça sera:

java junit.ui.TestRunner testsuite.regression.ResultSetRegressionTest
java junit.ui.TestRunner testsuite.regression.StringRegressionTest
...etc...

pour chacune des classes de test dans les packages "regression" et
"simple". Idéalement le projet devrait fournir une classe AllTests
permetttant d'enchaîner tous les tests, ça n'a pas l'air d'être le cas
ici.


non, pas du tout et le code $.java ne me semble pas vraiment commenté...

entk merci pour toutes ces précisions...
--
Yvon Thoraval