Re: What version of JUnit, again? - Mailing list pgsql-jdbc
From | Sehrope Sarkuni |
---|---|
Subject | Re: What version of JUnit, again? |
Date | |
Msg-id | CAH7T-aqS-T=DbwQEm+EiLYEuL4s44zqkn4xXiaC4TN7M+6T+Xw@mail.gmail.com Whole thread Raw |
In response to | Re: What version of JUnit, again? (David Ventimiglia <dventimi@gmail.com>) |
Responses |
Re: What version of JUnit, again?
Re: What version of JUnit, again? |
List | pgsql-jdbc |
I think that might be ant not respecting the CLASSPATH environment variable. You might have to specify it explicitly when you run ant instead. Try running it like this: $ ant -lib lib:/usr/share/java/junit4.jar test Regards, Sehrope Sarkuni Founder & CEO | JackDB, Inc. | http://www.jackdb.com/ On Sun, Aug 3, 2014 at 9:00 PM, David Ventimiglia <dventimi@gmail.com> wrote: > Spoke too soon. That produced a different error with your test (see below). > > Testsuite: org.postgresql.test.ssl.SingleCertValidatingFactoryTest > Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0 sec > > Null Test: Caused an ERROR > junit/framework/JUnit4TestAdapterCache > java.lang.NoClassDefFoundError: junit/framework/JUnit4TestAdapterCache > at java.lang.ClassLoader.defineClass1(Native Method) > at java.lang.ClassLoader.defineClass(ClassLoader.java:800) > at > java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) > at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) > at java.net.URLClassLoader.access$100(URLClassLoader.java:71) > at java.net.URLClassLoader$1.run(URLClassLoader.java:361) > at java.net.URLClassLoader$1.run(URLClassLoader.java:355) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:354) > at java.lang.ClassLoader.loadClass(ClassLoader.java:425) > at java.lang.ClassLoader.loadClass(ClassLoader.java:358) > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:190) > at java.net.URLClassLoader$1.run(URLClassLoader.java:366) > at java.net.URLClassLoader$1.run(URLClassLoader.java:355) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:354) > at java.lang.ClassLoader.loadClass(ClassLoader.java:425) > at java.lang.ClassLoader.loadClass(ClassLoader.java:358) > > > > On Sun, Aug 3, 2014 at 5:55 PM, David Ventimiglia <dventimi@gmail.com> > wrote: >> >> Indeed. The JUnit4 jar seems to include the old-style JUnit packages. >> Since I also have JUnit4 in my Maven repository, then in the build.xml file >> for the pgjdbc project, I changed it to use JUnit version="4.0" instead of >> version="3.8.2" and it worked fine (see patch below). >> >> diff --git a/build.xml b/build.xml >> index 9ce437d..956fb9c 100644 >> --- a/build.xml >> +++ b/build.xml >> @@ -108,7 +108,7 @@ >> </patternset> >> >> >> <artifact:dependencies pathId="dependency.classpath" useScope="test"> >> - <dependency groupId="junit" artifactId="junit" version="3.8.2" >> scope="test"/> >> + <dependency groupId="junit" artifactId="junit" version="4.0" >> scope="test"/> >> </artifact:dependencies> >> >> <target name="check_versions"> >> >> >> >> On Sun, Aug 3, 2014 at 5:46 PM, Sehrope Sarkuni <sehrope@jackdb.com> >> wrote: >>> >>> The original unit tests use only junit 3.8. >>> >>> I wrote the newer SSL tests for the SingleCertValidatingFactory to use >>> the newer version of junit (and using annotations etc) as the expectation >>> was that it's only included in a JDBC 4/JDK5+ environment. >>> >>> I'll see if I can dig up my local config for running it when I get to my >>> computer but I think I just used used the Ubuntu packages for junit 4 and >>> manually add them to the CLASSPATH env variable. >>> >>> You should be able to run the original tests with just the newer junit on >>> the CLASSPATH. >>> >>> You might also want to take a peek at: >>> https://github.com/jackdb/pgjdbc-test-vm >>> >>> It's what I originally used to test the SSL factory patches. It sets up a >>> bunch of PG servers in a VM with know SSL configurations and users for >>> testing. It can also be used for testing the rest of the driver. >>> >>> Regards, >>> Sehrope Sarkuni >>> Founder & CEO | JackDB, Inc. | http://www.jackdb.com/ >>> >>> On Aug 3, 2014, at 8:32 PM, David Ventimiglia <dventimi@gmail.com> wrote: >>> >>> I have no CLASSPATH environment variable. As for the classpath that is >>> used by Ant, it's my assumption that's handled by Ant and/or Maven. What I >>> can tell you are these things. >>> >>> I'm on Ubuntu Linux, a Debian-based distro, where typically I install >>> things using the package manager rather than by direct download. >>> Therefore, I've both JUnit (3.8.2) and JUnit4 (4.0.0) "installed" >>> courtesy of the apt-get package manager. But they're not on any CLASSPATH >>> and Ant and Maven were unaware of them. >>> Within the pgjdbc project, I ran `ant' as instructed. That failed, >>> because the build.xml file has a dependency on JUnit 3.8.2. >>> Helpfully, the Ant build error included instructions for how to satisfy >>> the JUnit dependency (see below). I found the JUnit 3.8.2 JAR file that >>> apt-get had installed on my system and fed that path into the Maven command. >>> Ran `ant' again. This time, because the JUnit dependency had been >>> satisfied, it successfully built the JDBC driver. But because it didn't run >>> any tests, it didn't trigger any run-time error. >>> Ran `ant test' and got the errors that I sent you. >>> Noticed that the SingleCertValidatingFactoryTest class (if nothing else) >>> imports from org.junit, which I understood to be a JUnit4 package (but maybe >>> I'm wrong). >>> I became confused. >>> >>> The Maven command to install the JUnit jar was: >>> >>> mvn install:install-file -DgroupId=junit -DartifactId=junit >>> -Dversion=3.8.2 -Dpackaging=jar -Dfile=/usr/share/java/junit-3.8.2.jar >>> >>> I assure you that the jar file is a bona fide JUnit 3.8.2 jar file. >>> >>> >>> >>> On Sun, Aug 3, 2014 at 5:19 PM, Dave Cramer <pg@fastcrypt.com> wrote: >>>> >>>> Is junit on the classpath ? >>>> >>>> >>>> >>>> Dave Cramer >>>> >>>> dave.cramer(at)credativ(dot)ca >>>> http://www.credativ.ca >>>> >>>> >>>> On 3 August 2014 20:15, David Ventimiglia <dventimi@gmail.com> wrote: >>>>> >>>>> You bet. They're in the attached errors.txt file and also pasted in >>>>> below. >>>>> >>>>> Buildfile: /home/dventimi/work/pgjdbc/build.xml >>>>> >>>>> prepare: >>>>> >>>>> check_versions: >>>>> >>>>> check_driver: >>>>> >>>>> driver: >>>>> >>>>> compile: >>>>> [javac] /home/dventimi/work/pgjdbc/build.xml:243: warning: >>>>> 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set >>>>> to false for repeatable builds >>>>> >>>>> artifact-version: >>>>> [echo] Artifact version string: postgresql-9.4-1200.jdbc41 >>>>> >>>>> jar: >>>>> >>>>> testjar: >>>>> [mkdir] Created dir: /home/dventimi/work/pgjdbc/build/tests >>>>> [javac] /home/dventimi/work/pgjdbc/build.xml:451: warning: >>>>> 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set >>>>> to false for repeatable builds >>>>> [javac] Compiling 84 source files to >>>>> /home/dventimi/work/pgjdbc/build/tests >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:3: >>>>> error: package org.junit does not exist >>>>> [javac] import org.junit.Assert; >>>>> [javac] ^ >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:4: >>>>> error: package org.junit does not exist >>>>> [javac] import org.junit.Test; >>>>> [javac] ^ >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:5: >>>>> error: package org.junit does not exist >>>>> [javac] import org.junit.Before; >>>>> [javac] ^ >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:6: >>>>> error: package org.junit does not exist >>>>> [javac] import org.junit.BeforeClass; >>>>> [javac] ^ >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:7: >>>>> error: package org.junit.runners does not exist >>>>> [javac] import org.junit.runners.Parameterized; >>>>> [javac] ^ >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:8: >>>>> error: package org.junit.runners.Parameterized does not exist >>>>> [javac] import org.junit.runners.Parameterized.Parameters; >>>>> [javac] ^ >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:9: >>>>> error: package org.junit.runner does not exist >>>>> [javac] import org.junit.runner.RunWith; >>>>> [javac] ^ >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:23: >>>>> error: cannot find symbol >>>>> [javac] @RunWith(Parameterized.class) >>>>> [javac] ^ >>>>> [javac] symbol: class RunWith >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:42: >>>>> error: cannot find symbol >>>>> [javac] @Parameters >>>>> [javac] ^ >>>>> [javac] symbol: class Parameters >>>>> [javac] location: class SingleCertValidatingFactoryTest >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:181: >>>>> error: cannot find symbol >>>>> [javac] @Test >>>>> [javac] ^ >>>>> [javac] symbol: class Test >>>>> [javac] location: class SingleCertValidatingFactoryTest >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:203: >>>>> error: cannot find symbol >>>>> [javac] @Test >>>>> [javac] ^ >>>>> [javac] symbol: class Test >>>>> [javac] location: class SingleCertValidatingFactoryTest >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:213: >>>>> error: cannot find symbol >>>>> [javac] @Test >>>>> [javac] ^ >>>>> [javac] symbol: class Test >>>>> [javac] location: class SingleCertValidatingFactoryTest >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:223: >>>>> error: cannot find symbol >>>>> [javac] @Test >>>>> [javac] ^ >>>>> [javac] symbol: class Test >>>>> [javac] location: class SingleCertValidatingFactoryTest >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:240: >>>>> error: cannot find symbol >>>>> [javac] @Test >>>>> [javac] ^ >>>>> [javac] symbol: class Test >>>>> [javac] location: class SingleCertValidatingFactoryTest >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:257: >>>>> error: cannot find symbol >>>>> [javac] @Test >>>>> [javac] ^ >>>>> [javac] symbol: class Test >>>>> [javac] location: class SingleCertValidatingFactoryTest >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:274: >>>>> error: cannot find symbol >>>>> [javac] @Test >>>>> [javac] ^ >>>>> [javac] symbol: class Test >>>>> [javac] location: class SingleCertValidatingFactoryTest >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:307: >>>>> error: cannot find symbol >>>>> [javac] @Test >>>>> [javac] ^ >>>>> [javac] symbol: class Test >>>>> [javac] location: class SingleCertValidatingFactoryTest >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:327: >>>>> error: cannot find symbol >>>>> [javac] @Test >>>>> [javac] ^ >>>>> [javac] symbol: class Test >>>>> [javac] location: class SingleCertValidatingFactoryTest >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:351: >>>>> error: cannot find symbol >>>>> [javac] @Test >>>>> [javac] ^ >>>>> [javac] symbol: class Test >>>>> [javac] location: class SingleCertValidatingFactoryTest >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:141: >>>>> error: cannot find symbol >>>>> [javac] Assert.assertEquals(1, rs.getInt(1)); >>>>> [javac] ^ >>>>> [javac] symbol: variable Assert >>>>> [javac] location: class SingleCertValidatingFactoryTest >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:147: >>>>> error: cannot find symbol >>>>> [javac] Assert.assertEquals(sslExpected, sslActual); >>>>> [javac] ^ >>>>> [javac] symbol: variable Assert >>>>> [javac] location: class SingleCertValidatingFactoryTest >>>>> [javac] >>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:172: >>>>> error: cannot find symbol >>>>> [javac] Assert.fail("Expected exception " + >>>>> expectedThrowable.getName() + " but it did not occur."); >>>>> [javac] ^ >>>>> [javac] symbol: variable Assert >>>>> [javac] location: class SingleCertValidatingFactoryTest >>>>> [javac] Note: Some input files use or override a deprecated API. >>>>> [javac] Note: Recompile with -Xlint:deprecation for details. >>>>> [javac] Note: Some input files use unchecked or unsafe operations. >>>>> [javac] Note: Recompile with -Xlint:unchecked for details. >>>>> [javac] 22 errors >>>>> >>>>> BUILD FAILED >>>>> /home/dventimi/work/pgjdbc/build.xml:451: Compile failed; see the >>>>> compiler error output for details. >>>>> >>>>> Total time: 12 seconds >>>>> >>>>> >>>>> >>>>> On Sun, Aug 3, 2014 at 5:07 PM, Dave Cramer <pg@fastcrypt.com> wrote: >>>>>> >>>>>> Pretty sure I use 3.8.2 >>>>>> >>>>>> Can you provide me with the errors you are getting ? >>>>>> >>>>>> Dave Cramer >>>>>> >>>>>> dave.cramer(at)credativ(dot)ca >>>>>> http://www.credativ.ca >>>>>> >>>>>> >>>>>> On 3 August 2014 16:53, David Ventimiglia <dventimi@gmail.com> wrote: >>>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> I'm a little confused as to what version of JUnit I'm supposed to be >>>>>>> using in order to build/test the Postgresql JDBC driver. This page says >>>>>>> that "JUnit at least 3.7 is needed." >>>>>>> >>>>>>> http://jdbc.postgresql.org/development/development.html >>>>>>> >>>>>>> But, there's a big between JUnit 3.8 and earlier and JUnit 4. The >>>>>>> former has components in packages junit.framework while the latter has >>>>>>> components in org.junit and so test that directly import on or the other of >>>>>>> those packages are sensitive to the version of JUnit you're using. >>>>>>> >>>>>>> An example of such a test is SingleCertValidatingFactoryTest.java in >>>>>>> pgjdbc/org/postgresql/test/ssl directory (presumably other tests are like >>>>>>> this). >>>>>>> >>>>>>> On the other hand, the pgjdbc Ant build.xml file specifies JUnit >>>>>>> 3.8.2.: >>>>>>> >>>>>>> <artifact:dependencies pathId="dependency.classpath" >>>>>>> useScope="test"> >>>>>>> <dependency groupId="junit" artifactId="junit" version="3.8.2" >>>>>>> scope="test"/> >>>>>>> </artifact:dependencies> >>>>>>> >>>>>>> Presumably, this is why running `ant test' in pgjdbc fails for me >>>>>>> with compilation errors. I confess, I'm not an expert with Ant and Maven, >>>>>>> so maybe I've done something wrong. But, exactly waht version of JUnit >>>>>>> should I be using? Thanks! >>>>>>> >>>>>>> Best, >>>>>>> David Ventimiglia >>>>>> >>>>>> >>>>> >>>> >>> >> >
pgsql-jdbc by date: